- Worker: Ensure 4-byte alignment for network packet receive buffers and test buffers to avoid undefined behavior (PR #1756.
- Worker: Update liburing from 2.12-1 to 2.14-1 (PR #1761.
- Worker: Improve
Utils::Crypto::GetRandomUInt()(PR #1725. - Convert
WORKER_CLOSEinto a notification (PR #1729. - Node tests: Replace
sctpunmaintained library withwerift-sctp(PR #1732, thanks to @shinyoshiaki for his help withwerift-sctp. - Worker: Require C++20 (PR #1741.
- Fix "SCTP failed" if no DataChannel is created on a Transport with
enableSctp: true(PR #1749.
ICE::StunPacket: Fix wrong memory access inGetXorMappedAddress()method (08c1ec9).
RTP::ProbationGenerator: Remove wrong warning log (PR #1703.
RtpStreamSend: duplicated packets are discarded (PR #1683.- Worker: Update liburing from 2.5-2 to 2.12-1 (PR #1686.
- Worker: Use the new
RTP::Packetclass (PR #1689. - Worker: Use the new
ICE::StunPacketclass (PR #1697. - Node: Expose
ortcfunctions inexportsinpackage.jsonand main module (PR #1698.
- Worker: Fix missing system header include, which fails in GCC 15 (PR #1679, credits to @upisfree).
RtxStream: Don't check if RTP timestamp moved backwards (PR #1668, credits to @Lynnworld).- Fix RTX packets containing non yet seen RTP packets being discarded (PR #1653, credits to @penguinol, @mengbieting and @Lynnworld).
- Only look up the RTP packet’s RID extension if the packet doesn’t have MID extension (PR #1666).
- Node: Add
workerBinoptional field increateWorker()(PR #1660).
- Add
jitterinConsumer'outbound-rtp' stats (PR #1654).
- Fix RTCP packets lost in stats (PR #1651).
- Fix RTCP cumulative total lost computation (PR #1650).
- Bump up Meson from 1.5.0 to 1.9.1 (PR #1634).
SeqManager: Fix, properly account out of order drops until an input is forwarded (#1635), thanks to @pnts-se-whereby for reporting.RtpParameters: Addmsidoptional field (PR #1634).
- AV1: Set DependencyDescriptor Header Extension to 'recvonly' but forward it between pipe transports (#1632).
- Add custom 'urn:mediasoup:params:rtp-hdrext:packet-id' (mediasoup-packet-id) header extension (#1631).
- AV1: Add support for DD extension header forwarding (#1610).
- DependencyDescriptor: Update listener on RtpPacket clone (#1618).
- CI: Remove
macos-13hosts. - VP8: Fix keyframe detection if "extended" bit is not set (PR #1612, credits to @nifigase).
- CI: Remove
node-20GitHub actions. - Require Node.js >= 22 (PR #1614).
IceServer: Fix active tuple selection when in "completed" state (PR #1608, credits to @pangsimon).
- Worker: Fix retransmissions, set proper marker bit (PR #1606).
- Node: Improve worker binary location detection (PR #1603).
router.pipeToRouter()can now connect twoRoutersin the sameWorkerifkeepIdis set tofalse(PR #1604).
TransportTuple: Generate hash based not only on remote IP:port but also on local IP:port (PR #1586).IceServer: Only update selected tuple if the new Binding request has ICE renomination (PR #1587, credits to @pangsimon).- Fix installation in paths with spaces (PR #1596, thanks to @ShuzhaoFeng for reporting and helping with this issue).
- Node: Make
RtpCodecCapability.preferredPayloadTypemandatory and addRouterRtpCodecCapabilitytype (in whichpreferredPayloadTypeis optional) andRouterRtpCapabilitiestype (PR #1584).
WebRtcServer: Remove the limit of 8listenInfos.
- Worker: Update Meson subprojects (PR #1582).
TransportListenInfo: AddexposeInternalIpwhich, if set totrueandannouncedAddressis set, exposes an additional ICE candidate inWebRtcTransportwhose IP islistenInfo.iprather thanlistenInfo.announcedAddress(PR #1583).
- Node: Fix
PipeConsumerOptionsTypeScript type (makeConsumerAppDataTS argument optional) (PR #1581).
Router: AddupdateMediaCodecs()method to dynamically change Router's RTP capabilities (PR #1571).RtpStream: UpdatemaxPacketTsif RTP timestamp moved backwards despite in-order RTP sequence number (PR #1574, credits to @oppolixiang).RtpStream: Ignore padding only RTP packets in RTP data counters (PR #1580, thanks to @quanli168 for reporting the issue).
- Remove H265 codec and deprecated frame-marking RTP extension (PR #1564).
SimulcastConsumer: Fix selecting spatial layer higher than preferred one (PR #1565).- Remove H264-SVC codec (PR #1568).
RateCalculator: Fix crash due to buffer overflow and avoid time overflow (PR #1570).
Consumerclasses: Really fix target layer retransmission buffer (PR #1558).
Consumerclasses: Disable target layer retransmission buffer until [issue #1554] (#1554) is really fixed.
Consumerclasses: Fix target layer retransmission buffer (PR #1555).
Consumerclasses: Disable target layer retransmission buffer until [issue #1554] (#1554) is fixed.
- libuv: Update to v1.51.0 (PR #1543).
- libsrtp: Update to v3.0.0-beta version in our fork (PR #1544).
Consumerclasses: Only drop packets in RTP sequence manager when they belong to current spatial layer (PR #1549).Consumerclasses: Add target layer retransmission buffer to avoid PLIs/FIRs when RTP packets containing a key frame arrive out of order (PR #1550).
- Node: Make
worker.close()close the worker process by sending aWORKER_CLOSErequest through the channel instead of by sending a SIGINT signal (PR #1534). - Worker: Add initial AV1 codec support (PR #1508).
SvcConsumer: Fix K-SVC bitrate inIncreaseLayer()method (PR #1535 by @vpalmisano).- Node: Require Node >= 20 (drop support for Node 18) (PR #1536).
- Worker: Fix encode retransmitted packets with the corresponding data (PR #1527).
- CI: Remove redundant hosts
macos-14andwindows-2022frommediasoup-worker-prebuildjob (PR #1506). - Node: Modernize code (PR #1513).
- Fix wrong SCTP stream parameters in SCTP
DataConsumerthat consumes from a directDataProducer(PR #1516).
- CI: Remove deprecated
ubuntu-20.04host and addwindows-2025,ubuntu-22.04-armandubuntu-24.04-armhosts (PR #1500).
Consumer: Fix sequence number gap (PR #1494).- Fix VP9 out of order packets forwarding (PR #1486 by @vpalmisano).
- Worker: Drop VP8 packets with a higher temporal layer than the current one (PR #1009).
- Fix the problem of the TCC package being omitted from being sent (PR #1492 by @penguinol).
- Node: Expose
Indexinterface intypes.indexTypesor viaimport { Index as MediasoupIndex } from 'mediasoup/lib/indexTypes'(PR #1485).
- Worker: Fix crash when using colliding
portRangevalues in different transports (PR #1469).
- Expose
extrasnamespace which exportsEnhancedEventEmitterandenhancedOnce()for now (PR #1464).
- Node: Add TypeScript interfaces for all exported classes (PR #1463).
- Node: Add new
transport.typegetter than returns'webrtc' | 'plain' | 'pipe' | 'direct'(PR #1463). - Node: Add new
rtpObserver.typegetter than returns'activespeaker' | 'audiolevel'(PR #1463).
SimulcastConsumer: Fix cannot switch layers if initialtsReferenceSpatialLayer disappearsdisappears (PR #1459 by @Lynnworld).
- Update worker abseil-cpp dependency to 20240722.0 LTS (fixes compilation for FreeBSD systems) (PR #1457, credits to @garrettboone).
- Sign self generated DTLS certificate with SHA256 (PR #1450).
- Node: Fix
mediasoup.typesexported types are empty (PR #1453).
- Node: Fix regression in exported
mediasoup.types(classes are now exported as classes instead of types).
- Worker: Fix
io_uringsupport detection (PR #1445). - Mitigate libsrtp wraparound with loss decryption failure (PR #1438).
- Node: New
setLogEventListeners()utility to get log events (PR #1448).
- Worker: Fix
disableLiburingoption inWorkerSettings(PR #1444).
- CI: Support Node 22 (PR #1434).
- Update ESLint to version 9 (PR #1435).
- Worker: Add
disableLiburingboolean option (falseby default) to disableio_uringeven if it's supported by the prebuiltmediasoup-workerand by current host (PR #1442).
- Worker: Test, fix buffer overflow (PR #1419).
- Bump up Meson from 1.3.0 to 1.5.0 (PR #1424).
- Node: Export new
WorkerObserver,ProducerObserver, etc. TypeScript types (PR #1430). - Fix frozen video in simulcast due to wrong dropping of padding only packets (PR #1431, thanks to @quanli168).
- Add support for 'playout-delay' RTP extension (PR #1412 by @DavidNegro).
SimulcastConsumer: Fix increase layer when current layer has not receive SR (PR #1098 by @penguinol).- Ignore RTP packets with empty payload (PR #1403, credits to @ggarber).
- Worker: Fix potential double free when ICE consent check fails (PR #1393).
- Worker: Fix memory leak when using
WebRtcServerwith TCP enabled (PR #1389). - Worker: Fix crash when closing
WebRtcServerwith activeWebRtcTransports(PR #1390).
- Worker: Fix crash.
RtcpFeedbackparameter is optional (PR #1387, credits to @Lynnworld).
- Worker: Fix possible value overflow in
FeedbackRtpTransport.cpp(PR #1386, credits to @Lynnworld).
- Update worker subprojects (PR #1376).
- OPUS: Fix DTX detection (PR #1357).
- Worker: Fix sending callback leaks (PR #1383, credits to @Lynnworld).
- Node: Bring transport
rtpPacketLossReceivedandrtpPacketLossSentstats back (PR #1371).
TransportListenInfo: AddportRange(deprecate worker port range) (PR #1365).- Require Node.js >= 18 (PR #1365).
- Node: Fix missing
bitrateByLayerfield in stats ofRtpRecvStreamin Node (PR #1349). - Update worker dependency libuv to 1.48.0.
- Update worker FlatBuffers to 24.3.6-1 (fix cannot set temporal layer 0) (PR #1348).
- Fix DTLS packets do not honor configured DTLS MTU (attempt 3) (PR #1345).
- Fix wrong publication of mediasoup NPM 3.13.21.
- Revert (PR #1156) "Make DTLS fragment stay within MTU size range" because it causes a memory leak (PR #1342).
- Add server side ICE consent checks to detect silent WebRTC disconnections (PR #1332).
- Fix regression (crash) in transport-cc feedback generation (PR #1339).
- Node: Fix
router.createWebRtcTransport()withlistenIps(PR #1330).
- Make transport-cc feedback work similarly to libwebrtc (PR #1088 by @penguinol).
TransportListenInfo: "announced ip" can also be a hostname (PR #1322).TransportListenInfo: Rename "announced ip" to "announced address" (PR #1324).- CI: Add
macos-14.
- Fix prebuilt worker download (PR #1319 by @brynrichards).
- libsrtp: Update to v3.0-alpha version in our fork.
- Node: Add new
worker.on('subprocessclose')event (PR #1307).
- Add worker prebuild binary for Linux kernel 6 (PR #1300).
- Avoid modification of user input data (PR #1285).
TransportListenInfo: Add transport socket flags (PR #1291).- Note that
flags.ipv6Onlyisfalseby default.
- Note that
TransportListenInfo: Ignore given socket flags if not suitable for given IP family or transport (PR #1294).- Meson: Remove
-Db_pie=true -Db_staticpic=trueargs (PR #1293). - Add RTCP Sender Report trace event (PR #1267 by @GithubUser8080).
- Worker: Do not use references for async callbacks (PR #1274).
- liburing: Enable zero copy (PR #1273).
- Fix build on musl based systems (such as Alpine Linux) (PR #1279).
- Worker: Disable
RtcLoggerusage if not enabled (PR #1264). - npm installation: Don't require Python if valid worker prebuilt binary is fetched (PR #1265).
- Update h264-profile-level-id NPM dependency to 1.1.0.
- liburing: Avoid extra memcpy on RTP (PR #1258).
- libsrtp: Use our own fork with performance gain (PR #1260).
DataConsumer: AddaddSubchannel()andremoveSubchannel()methods (PR #1263).- Fix Rust
DataConsumer(PR #1262).
tasks.py: Always include--no-userinpip installcommands to avoid the "can not combine --user and --target" error in Windows (PR #1257).
- liburing: Enable liburing usage for SCTP data delivery (PR 1249).
- liburing: Disable by default (PR 1253).
- Update worker dependencies (PR #1201):
- abseil-cpp 20230802.0-2
- libuv 1.47.0-1
- OpenSSL 3.0.8-2
- usrsctp snapshot ebb18adac6501bad4501b1f6dccb67a1c85cc299
- Enable
liburingusage for Linux (kernel versions >= 6) (PR #1218).
- Replace make + Makefile with Python Invoke library + tasks.py (also fix installation under path with whitespaces) (PR #1239).
- Fix RTCP SDES packet size calculation (PR #1236 based on PR PR #1234 by @ybybwdwd).
- RTCP Compound Packet: Use a single DLRR report to hold all ssrc info sub-blocks (PR #1237).
- Fix RTCP DLRR (Delay Since Last Receiver Report) block parsing (PR #1234).
- Node: Fix issue when 'pause'/'resume' events are not emitted (PR #1231 by @douglaseel).
- FBS:
LayersChangeNotificationbody must be optional (fixes a crash) (PR #1227).
- Node: Extract version from
package.jsonusingrequire()(PR #1217 by @arcinston).
- Switch from JSON based messages to FlatBuffers (PR #1064).
- Add
TransportListenInfoin all transports and send/recv buffer size options (PR #1084). - Add optional
rtcpListenInfoinPlainTransportOptions(PR #1099). - Add pause/resume API in
DataProducerandDataConsumer(PR #1104). - DataChannel subchannels feature (PR #1152).
- Worker: Make DTLS fragment stay within MTU size range (PR #1156, based on PR #1143 by @vpnts-se).
- Fix
IceServercrash when client uses ICE renomination (PR #1182).
- Fix NPM "postinstall" task in Windows (PR #1187).
- CI: Use Node.js version 20 (PR #1177).
- Use given
PYTHONenvironment variable (if given) when runningworker/scripts/getmake.py(PR #1186).
- Bump up Meson from 1.1.0 to 1.2.1 (fixes Xcode 15 build issues) (PR #1163 by @arcinston).
- Support C++20 (PR #1150 by @o-u-p).
- Google Transport Feedback: Read Reference Time field as 24bits signed as per spec (PR #1145).
- Node: Rename
WebRtcTransport.webRtcServerClosed()tolistenServerClosed()(PR #1141 by @piranna).
- Fix RTCP SDES (PR #1139).
- Export
workerBinabsolute path (PR #1123).
SimulcastConsumer: Fix lack of "layerschange" event when all streams in the producer die (PR #1122).
- Worker: Add
Transport::Destroying()protected method (PR #1114). RtpStreamRecv: Fix jitter calculation (PR #1117, thanks to @penguinol).- Revert "Node: make types.ts only export types rather than the entire class/code" (PR #1109) because it requires
typescript>= 5 in the apps that import mediasoup and we don't want to be that strict yet.
DataConsumer: Fix removed 'bufferedamountlow' notification (PR #1113).
- Fix downloaded prebuilt binary check on Windows (PR #1105 by @woodfe).
Migrate npm-scripts.js to npm-scripts.mjs (ES Module) (PR #1093).
- CI: Use
ubuntu-20.04to buildmediasoup-workerprebuilt on Linux (PR #1092).
mediasoup-workerprebuild: Fallback to local building if fetched binary doesn't run on current host (PR #1090).
- Automate and publish prebuilt
mediasoup-workerbinaries (PR #1087, thanks to @barlock for his work in (PR #1083).
- Worker: Fix NACK timer and avoid negative RTT (PR #1082, thanks to @o-u-p for his work in (PR #1076).
- Worker: Require C++17, Meson >= 1.1.0 and update subprojects (PR #1081).
SeqManager: Fix performance regression (PR #1068, thanks to @vpalmisano for properly reporting).
- Node: Fix
appDataforTransportandRtpObserverparent classes (PR #1066).
RtpStreamRecv: Only perform RTP inactivity check on simulcast streams (PR #1061).SeqManager: Properly remove old dropped entries (PR #1054).- libwebrtc: Upgrade trendline estimator to improve low bandwidth conditions (PR #1055 by @ggarber).
- libwebrtc: Fix bandwidth probation dead state (PR #1031 by @vpalmisano).
- Fix check division by zero in transport congestion control (PR #1049 by @ggarber).
- Fix lost pending statuses in transport CC feedback (PR #1050 by @ggarber).
RtpStreamSend: Reset RTP retransmission buffer upon RTP sequence number reset (PR #1041).RtpRetransmissionBuffer: Handle corner case in which received packet has lower seq than newest packet in the buffer but higher timestamp (PR #1044).SeqManager: Fix crash and add fuzzer (PR #1045).- Node: Make
appDataTS typed and writable (PR #1046, credits to @mango-martin).
SvcConsumer: Properly handle VP9 K-SVC bandwidth allocation (PR #1036 by @vpalmisano).
RtpRetransmissionBuffer: Consider the case of packet with newest timestamp but "old" seq number (PR #1039).
- Add
transport.setMinOutgoingBitrate()method (PR #1038, credits to @ jcague). RTC::RetransmissionBuffer: IncreaseRetransmissionBufferMaxItemsfrom 2500 to 5000.
- Fix
SeqManager: Properly consider previous cycle dropped inputs (PR #1032). RtpRetransmissionBuffer: Get rid of not necessarystartSeqprivate member (PR #1029).- Node: Upgrade TypeScript to 5.0.2.
RtpRetransmissionBuffer: Fix crash and add fuzzer (PR #1028).
- Refactor RTP retransmission buffer in a separate and testable
RTC::RetransmissionBufferclass (PR #1023).
AudioLevelObserver: Use multimap rather than map to avoid conflict if various Producers generate same audio level (PR #1021, issue reported by @buptlsp).
- Fix jitter calculation (PR #1019, credits to @alexciarlillo and @snnz).
- Add support for RTCP NACK in OPUS (PR #1015).
- Download and use MSYS/make locally for Windows postinstall (PR #792 by @snnz).
- Allow simulcast with a single encoding (and N temporal layers) (PR #1013).
- Update libsrtp to 2.5.0.
SimulcastConsumer::GetDesiredBitrate(): Choose the highest bitrate among all Producer streams (PR #992).SimulcastConsumer: Fix frozen video when syncing keyframe is discarded due to too high RTP timestamp extra offset needed (PR #999, thanks to @satoren for properly reporting the issue and helping with the solution).
- libwebrtc: Fix crash due to invalid
arrival_timevalue (PR #985 by @ggarber). - libwebrtc: Replace
MS_ASSERT()withMS_ERROR()(PR #988).
- Fix wrong
PictureIDrolling over in VP9 and VP8 (PR #984 by @jcague).
- Require Node.js >= 16 (PR #973).
- Fix wrong
Consumerbandwidth estimation underProducerpacket loss (PR #962 by @ggarber).
- Node: Migrate tests to TypeScript (PR #958).
- Node: Remove compiled JavaScript from repository and compile TypeScript code on NPM
preparescript on demand when installed via git (PR #954). - Worker: Add
RTC::Sharedsingleton for RTC entities (PR #953). - Update OpenSSL to 3.0.7.
ChannelMessageHandlers: MakeRegisterHandler()not remove the existing handler if another one with sameidis given (PR #952).
- Fix installation issue in Linux due to a bug in ninja latest version 1.11.1 (PR #948).
ActiveSpeakerObserver: Revert 'dominantspeaker' event changes in PR #941 to avoid breaking changes (PR #947).
Transport: Remove duplicate call to method (PR #931).- RTCP: Adjust maximum compound packet size (PR #934).
DataConsumer: FixbufferedAmounttype to be a number again (PR #936).ActiveSpeakerObserver: Fix 'dominantspeaker' event by having a singleProduceras argument rather than an array with a singleProducerinto it (PR #941).ActiveSpeakerObserver: Fix memory leak (PR #942).- Fix some libwebrtc issues (PR #944).
- Tests: Normalize hexadecimal data representation (PR #945).
SctpAssociation: Fix memory violation (PR #943).
- Fix worker crash due to
std::out_of_rangeexception (PR #933).
- RTCP: Fix trailing space needed by
srtp_protect_rtcp()(PR #929).
- Fix the JSON serialization for the payload channel
rtpevent (PR #926 by @mhammo).
- RTCP enhancements (PR #914).
Consumer: use a bitset instead of a set for supported payload types (PR #919).- RtpPacket: optimize UpdateMid() (PR #920).
- Little optimizations and modernization (PR #916).
- Fix SIGSEGV at
RTC::WebRtcTransport::OnIceServerTupleRemoved()(PR #915, credits to @ybybwdwd). WebRtcServer: Makeportoptional (if not given, a random available port from theWorkerport range is used) (PR #908 by @satoren).
- Forward
abs-capture-timeRTP extension also for audio packets (PR #911).
- Node: Define TypeScript types for
internalanddataobjects (PR #891). ChannelandPayloadChannel: Refactorinternalwith a singlehandlerId(PR #889).ChannelandPayloadChannel: Optimize message format and JSON generation (PR #893).- New C++
ChannelMessageHandlersclass (PR #894). - Fix Rust support after recent changes (PR #898).
- Modify
FeedbackRtpTransportand tests to be compliant with latest libwebrtc code, make reference time to be unsigned (PR #899 by @penguinol and @sarumjanuch).
RtpStreamSend: Do not store too old RTP packets (PR #885).- Log error details in channel socket. (PR #875 by @mstyura).
SimpleConsumer: Fix. Only process Opus codec (PR #865).- TypeScript: Improve
WebRtcTransportOptionstype to not allowwebRtcServerandlistenIpsoptions at the same time (PR #852).
- Fix release contents by including
meson_options.txt(PR #863).
RtpStreamSend: Memory optimizations (PR #840). Extracted from #675, by @nazar-pc.SimpleConsumer: Opus DTX ignore capabilities (PR #846).- Update
libuvto 1.44.1: Fixeslibuvbuild (PR #857).
WebRtcServer: A new class that brings toWebRtcTransportsthe ability to listen on a single UDP/TCP port (PR #834).- More SRTP crypto suites (PR #837).
- Improve
EnhancedEventEmitter(PR #836). TransportCongestionControlClient: Allow setting max outgoing bitrate beforetccClientis created (PR #833).- Update TypeScript version.
RateCalculator: Fix old buffer items cleanup (PR #830 by @dsdolzhenko).- Update TypeScript version.
SimulcastConsumer: Fix spatial layer switch with unordered packets (PR #823 by @jcague).- Update TypeScript version.
RateCalculator: Revert Fix old buffer items cleanup (PR #819 by @dsdolzhenko).
NackGenerator: Add a configurable delay before sending NACK (PR #827, credits to @penguinol).SimulcastConsumer: Fix a race condition in SimulcastConsumer (PR #825 by @dsdolzhenko).- Add support for H264 SVC (#798 by @prtmD).
RtpStreamSend: Support receive RTCP-XR RRT and send RTCP-XR DLRR (PR #781 by @aggresss).RateCalculator: Fix old buffer items cleanup (PR #819 by @dsdolzhenko).DirectTransport: Create a buffer to process RTP packets (PR #730 by @rtctt).- Node: Improve
appDataTypeScript syntax and initialization. - Allow setting max outgoing bitrate below the initial value (PR #826 by @ggarber).
- Update TypeScript version.
VP8: Do not discardTL0PICIDXfrom Temporal Layers higher than 0 (PR @817 by @jcague).- Update TypeScript version.
DtlsTransport: Make DTLS negotiation run immediately (PR #815).- Update TypeScript version.
- Modify
SimulcastConsumerto keep using layers without good scores (PR #804 by @ggarber).
- Update worker dependencies:
- OpenSSL 3.0.2.
- abseil-cpp 20211102.0.
- nlohmann_json 3.10.5.
- usrsctp snapshot 4e06feb01cadcd127d119486b98a4bd3d64aa1e7.
- wingetopt 1.00.
- Update TypeScript version.
- Fix RTP marker bit not being reseted after mangling in each
Consumer(PR #811 by @ggarber).
- Optimize RTP header extension handling (PR #786).
RateCalculator: Reset optimization (PR #785).- Fix frozen video due to double call to
Consumer::UserOnTransportDisconnected()(PR #788, thanks to @ggarber for exposing this issue in PR #787).
- Fix VP9 kSVC forwarding logic to not forward lower unneded layers (PR #778 by @ggarber).
- Fix update bandwidth estimation configuration and available bitrate when updating max outgoing bitrate (PR #779 by @ggarber).
- Replace outdated
random-numberspackage by nativecrypto.randomInt()(PR #776 by @piranna). - Update TypeScript version.
- Typing event emitters in mediasoup Node (PR #764 by @unao).
- TCC client optimizations for faster and more stable BWE (PR #712 by @ggarber).
- Added support for RTP abs-capture-time header (PR #761 by @oto313).
- ICE renomination support (PR #756).
- Update
libuvto 1.43.0.
- Worker: Fix bad printing of error messages from Worker (PR #750 by @j1elo).
- Single H264/H265 codec configuration in
supportedRtpCapabilities(PR #718). - Improve Windows support by not requiring MSVC configuration (PR #741).
pipeToRouter(): Reuse samePipeTransportwhen possible (PR #697).- Add
worker.diedboolean getter. - Update TypeScript version to 4.X.X and use
target: "esnext"so transpilation of ECMAScript private fields (#xxxxx) don't useWeakMapstricks but use standard syntax instead. - Use more than one core for compilation on Windows (PR #709).
Consumer: Modification of bitrate allocation algorithm (PR #708).
- NixOS friendly build process (PR #683).
- Worker: Emit "died" event before observer "close" (PR #684).
- Transport: Hide debug message for RTX RTCP-RR packets (PR #688).
- Update
libuvto 1.42.0. - Improve Windows support (PR #692).
- Avoid build commands when MEDIASOUP_WORKER_BIN is set (PR #695).
- Replaces GYP build system with fully-functional Meson build system (PR #622).
- Worker communication optimization (aka removing netstring dependency) (PR #644).
- Move TypeScript and compiled JavaScript code to a new
nodefolder. - Use ES6 private fields.
- Require Node.js version >= 12.
- OPUS multi-channel (Surround sound) support (PR #647).
- Add
packetLossstats to transport (PR #648 by @ggarber). - Fixes for active speaker observer (PR #655 by @ggarber).
- Fix big endian issues (PR #639).
- Fix wrong
size_t*toint*conversion in 64bit Big-Endian hosts (PR #637).
ActiveSpeakerObserver: Fix crash due to anullptr(PR #634).
SimulcastConsumer: Fix RTP timestamp when switching layers (PR #626 by @penguinol).
- Update
libuvto 1.42.0. - Use non-ASM OpenSSL on Windows (PR #614).
- Fix minor memory leak caused by non-virtual destructor (PR #625).
- Dominant Speaker Event (PR #603 by @SteveMcFarlin).
- Update
libuvto 1.41.0. - C++:
- Support for optional fixed port on transports (PR #593 by @nazar-pc).
- Upgrade and optimize OpenSSL dependency (PR #598 by @vpalmisano):
- OpenSSL upgraded to version 1.1.1k.
- Enable the compilation of assembly extensions for OpenSSL.
- Optimize the worker build (
-O3) and disable the debug flag (-g).
- Introduce
PipeConsumerOptionsto avoid incorrect type information onPipeTransport.consume()arguments. - Make
ConsumerOptions.rtpCapabilitiesfield required as it should have always been.
- Add
midoption inConsumerOptionsto provide way to override MID (PR #586 by @mstyura).
kindfield ofRtpHeaderExtensionis no longer optional. It must be 'audio' or 'video'.- Refactor API inconsistency in internal RTP Observer communication with worker.
- Update
usrsctpto include a "possible use after free bug" fix (commit here).
- Fix build on FreeBSD (PR #585 by @smortex).
mediasoup-worker: Fix memory leaks on error exit (PR #581).
- Fix
DepUsrSCTP::Checker::timernot being freed onWorkerclose (PR #576). Thanks @nazar-pc for discovering this.
- Remove clang tools binaries from regular installation.
- Code clean up.
PayloadChannel: Copy received messages into a separate buffer to avoid memory corruption if the message is later modified (PR #570 by @aggresss).
- Thread and memory safety fixes needed for mediasoup-rust (PR #562 by @nazar-pc).
- mediasoup-rust support on macOS (PR #567 by @nazar-pc).
- mediasoup-rust release 0.7.2.
Transport: Implement newsetMaxOutgoingBitrate()method (PR #555 by @t-mullen).SctpAssociation: Don't warn if SCTP send buffer is full.- Rust: Update modules structure and other minor improvements for Rust version (PR #558).
mediasoup-worker: Avoid duplicated basenames so thatlibmediasoup-workeris compilable on macOS (PR #557).
- SctpAssociation: provide 'sctpsendbufferfull' reason on send error (#552).
- Improve
RateCalculator(PR #547 by @vpalmisano).
- Make worker M1 compilable.
RateCalculatoroptimization (PR #538 by @vpalmisano).
SimulcastConsumer: Fix miscalculation when increasing layer (PR #541 by @penguinol).- Rust version with thread-based worker (PR #540).
- Welcome to
mediasoup-rust! Authored by @nazar-pc (PRs #518 and #533). - Update
usrsctp.
- Fix crash if empty
fingerprintsarray is given inwebrtcTransport.connect()(issue #537).
Producer: Add new stats field 'rtxPacketsDiscarded' (PR #536).
Consumerclasses: makeIsActive()returntrue(even ifProducer's score is 0) when DTX is enabled (PR #534 due to issue #532).
- Fix crash (regression, issue #529).
- Add missing
delete cbthat otherwise would leak (PR #527 based on PR #526 by @vpalmisano). router.pipeToRouter(): Fix possible inconsistency inpipeProducer.pausedstatus (as discussed in this thread in the mediasoup forum).- Update
nlohmann/jsonto 3.9.1. - Update
usrsctp. - Enhance Jitter calculation.
- Fix notifications from
mediasoup-workerbeing processed before responses received before them (issue #501).
- Move
bufferedAmountfromdataConsumer.dump()todataConsumer.getStats().
- Add
pipeoption totransport.consume()(PR #494).- So the receiver will get all streams from the
Producer. - It works for any kind of transport (but
PipeTransportwhich is always like this).
- So the receiver will get all streams from the
- Add
LICENSEandPATENTSfiles inlibwebrtcdependency (issue #495). - Added
worker/src/Utils/README_BASE64_UTILS(issue #497). - Update
usrsctp.
- Fix wrong message about
rtcMinPortandrtcMaxPort. - Update deps.
- Improve
EnhancedEventEmitter.safeAsPromise()(although not used).
- Fix replacement of
__MEDIASOUP_VERSION__inlib/index.d.ts(issue #483). worker/scripts/configure.py: Handle 'mips64' (PR #485).
- Allow the
mediasoup-workerprocess to inherit all environment variables (issue #480).
- BWE tweaks and debug logs.
- SCTP fixes (PR #479).
- Update
awaitqueuedependency.
- Fix yet another memory leak in Node.js layer due to
PayloadChannelevent listener not being removed.
Transport.cpp: Provide transport congestion client with RTCP Receiver Reports (#464).- Update
libuvto 1.40.0. - Update Node deps.
SctpAssociation.cpp: increasesctpBufferedAmountbefore sending any data (#472).
- Fix memory leak in Node.js layer due to
PayloadChannelevent listener not being removed (related to #463).
- Remove
-fwrapvwhen buildingmediasoup-workerinDebugmode (issue #460). - Add
MEDIASOUP_MAX_CORESto limitNUM_CORESduringmediasoup-workerbuild (PR #462).
- Update
usrsctpdependency. - Update
typescript-eslintdeps. - Update Node deps.
- Fix
ortc.getConsumerRtpParameters()RTX codec comparison issue (PR #453). - RtpObserver: expose
RtpObserverAddRemoveProducerOptionsforaddProducer()andremoveProducer()methods.
- Update
libuvto 1.39.0. - Update Node deps.
- SimulcastConsumer: Prefer the highest spatial layer initially (PR #450).
- RtpStreamRecv: Set RtpDataCounter window size to 6 secs if DTX (#451)
SctpAssociation.cpp: FixOnSctpAssociationBufferedAmount()call.- Update deps.
- New API to send data from Node throught SCTP DataConsumer.
- Avoid SRTP leak by deleting invalid SSRCs after STRP decryption (issue #437, thanks to @penguinol for reporting).
- Update
usrsctpdep. - DataConsumer 'bufferedAmount' implementation (PR #442).
-
Fix
usrsctpvulnerability (PR #439). -
Fix issue #435 (thanks to @penguinol for reporting).
-
TransportCongestionControlClient.cpp: Enable periodic ALR probing to recover faster from network issues. -
Update
nlohmann::jsonC++ dep to 3.9.0.
- RTP on
DirectTransport(issue #433, PR #434):- New API
producer.send(rtpPacket: Buffer). - New API
consumer.on('rtp', (rtpPacket: Buffer). - New API
directTransport.sendRtcp(rtcpPacket: Buffer). - New API
directTransport.on('rtcp', (rtpPacket: Buffer).
- New API
- Release script.
Transport: renamemaxSctpSendBufferSizetosctpSendBufferSize.
Transport: ImplementmaxSctpSendBufferSize.- Update
libuvto 1.38.1.
Transport::ReceiveRtpPacket(): CallRecvStreamClosed(packet->GetSsrc())if received RTP packet does not match anyProducer.Transport::HandleRtcpPacket(): EnsureConsumeris found for received NACK Feedback packets.- Fix issue #408.
- Fix SRTP leak due to streams not being removed when a
ProducerorConsumeris closed. - Update
nlohmann::jsonC++ dep to 3.8.0. - C++: Enhance
constcorrectness.
ConsumerScore: AddproducerScores, scores of all RTP streams in the producer ordered by encoding (just useful when the producer uses simulcast).- PR #421 (fixes issues #420).
- Hide worker executable console in Windows.
- PR #419 (credits to @BlueMagnificent).
RtpStream.cpp: Fix wrongstd::round()usage.- Issue #423.
- Update
usrsctplibrary. - Update ESLint and TypeScript related dependencies.
- Set
score:0whendtx:trueis set in anencodingand there is no RTP for some seconds for that RTP stream.- Fixes #415.
gyp: Fix CLT version detection in OSX Catalina when XCode app is not installed.- PR #413 (credits to @enimo).
- Modernize TypeScript.
- Fix crash in
Transport.tswhen closing aDataConsumercreated on aDirectTransport.
- Export new
DirectTransportintypes. - Make
DataProducerOptionsoptional (not needed when in aDirectTransport).
- SCTP/DataChannel termination:
- PR #409
- Allow the Node application to directly send text/binary messages to
mediasoup-workerC++ process so others can consume them usingDataConsumers. - And vice-versa: allow the Node application to directly consume in Node messages send by
DataProducers.
- Add
WorkerLogTagTypeScript enum and also add a new 'message' tag into it.
- Simulcast and SVC: Better computation of desired bitrate based on
maxBitratefield in theproducer.rtpParameters.encodings.
- Update deps, specially
uuidand@types/uuidthat had a TypeScript related bug. TransportCongestionClient.cpp: Improve sender side bandwidth estimation by do not reportingthis->initialAvailableBitrateas available bitrate due to strange behavior in the algorithm.
- Simplify
GetDesiredBitrate()inSimulcastConsumerandSvcConsumer. - Update
libuvto 1.38.0.
SeqManager.cpp: Improve performance.- PR #398 (credits to @penguinol).
SeqManager.cpp: Fix a bug and improve performance.- Fixes issue #395 via PR #396 (credits to @penguinol).
- Drop Node.js 8 support. Minimum supported Node.js version is now 10.
- Upgrade
eslintandjestmajor versions.
SimulcastConsumer.cpp: FixIncreaseLayer()method (fixes #394).- Udpate Node deps.
libwebrtc: Apply patch by @sspanak and @Ivaka to avoid crash. Related issue: #357.PortManager.cpp: Do not useUV_UDP_RECVMMSGin Windows due to a bug inlibuv1.37.0.- Update Node deps.
- Enable
UV_UDP_RECVMMSG:- Upgrade
libuvto 1.37.0. - Use
uv_udp_init_ex()withUV_UDP_RECVMMSGflag. - Add our own
uv.gypnow thatlibuvhas removed support for GYP (fixes #384).
- Upgrade
- Fix crash in
mediasoup-workerdue to conversion fromuint64_ttoint64_t(used withinlibwebrtccode. Fixes #357. - Update
usrsctplibrary. - Update Node deps.
SeqManager.cpp: Fix video lag after a long time.- Fixes #372 (thanks @penguinol for reporting it and giving the solution).
UdpSocket.cpp: Revertuv__udp_recvmmsg()usage since it notifies about received UDP packets in reverse order. Feature on hold until fixed.
Transport.cpp: Enable transport congestion client for the first video Consumer, no matter it's uses simulcast, SVC or a single stream.- Update
libuvto 1.35.0. UdpSocket.cpp: Ensure the new libuv'suv__udp_recvmmsg()is used, which is more efficient.
PlainTransport: RemovemultiSourceoption. It was a hack nobody should use.
- Enable MID RTP extension in mediasoup to receivers direction (for consumers).
- This requires mediasoup-client 3.5.2 to work.
PlainTransport: Fix event name: 'rtcpTuple' => 'rtcptuple'.
PipeTransport: Add support for SRTP and RTP retransmission (RTX + NACK). Useful when connecting two mediasoup servers running in different hosts via pipe transports.PlainTransport: Add support for SRTP.- Rename
PlainRtpTransporttoPlainTransporteverywhere (classes, methods, TypeScript types, etc). Keep previous names and mark them as DEPRECATED. - Fix vulnarability in IPv6 parser.
- Update
uuiddep to 7.0.X (new API). - Fix crash due wrong array index in
PipeConsumer::FillJson().- Fixes #364
- TypeScript: generate
es2020instead ofes6. - Update
usrsctplibrary.- Fixes #362 (thanks @chvarlam for reporting it).
IceServer.cpp: Reject received STUN Binding request with 487 if remote peer indicates ICE-CONTROLLED into it.
ProducerOptions: RenamekeyFrameWaitTimeoption tokeyFrameRequestDelayand make it work as expected.
- Add
Utils::Json::IsPositiveInteger()to not rely onis_number_unsigned()of json lib, which is unreliable due to its design. - Avoid ES6
export defaultand always use namedexport. router.pipeToRouter(): Ensure a singlePipeTransportpair is created betweenrouter1androuter2.- 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 ofPipeTranports. To prevent that, let's use an async queue.
- Since the operation is async, it may happen that two simultaneous calls to
- Add
keyFrameWaitTimeoption toProducerOptions. - Update Node and C++ deps.
libsrtp.gyp: Fix regression in mediasoup for Windows.libsrtp.gyp: Modernize it based on the newBUILD.gnin Chromium.libsrtp.gyp: Don't include "test" and other targets.- Assume
HAVE_INTTYPES_H,HAVE_INT8_T, etc. in Windows. - Issue details: sctplab/usrsctp#353
gypdependency: Add support for Microsoft Visual Studio 2019.- Modify our own
gypsources to fix the issue. - CL uploaded to GYP project with the fix.
- Issue details: sctplab/usrsctp#347
- Modify our own
PortManager.cpp: Do not limit the number of failedbind()attempts to 20 since it does not work well in scenarios that launch tons ofWorkerswith same port range. Instead iterate all ports in the range given to the Worker.- Do not copy
catch.hppintotest/include/but make the GYPmediasoup-worker-testtarget include the corresponding folder indeps/catch.
- Update libsrtp to 2.3.0.
- Update ESLint and TypeScript deps.
- Update deps.
- Fix text in
./github/Bug_Report.mdso it no longer references the deprecated mailing list.
Transport.cpp: Ignore RTCP SDES packets (we don't do anything with them anyway).ProducerandConsumerstats: Always showroundTripTime(even if calculated value is 0) after aroundTripTime> 0 has been seen.
Transport.cpp: Fix RTCP FIR processing:- Instead of looking at the media ssrc in the common header, iterate FIR items and look for associated
Consumersbased on ssrcs in each FIR item. - Fixes #350 (thanks @j1elo for reporting and documenting the issue).
- Instead of looking at the media ssrc in the common header, iterate FIR items and look for associated
SctpAssociation.cpp: Improve/fix logs.- Improve Node
EventEmitterevents inline documentation. test-node-sctp.js: Wait for SCTP association to be open before sending data.
- Improve
mediasoup-workerbuild system by usingshinstead ofbashand default to 4 cores (thanks @smoke, PR #349).
- Add
worker.getResourceUsage()API. - Update OpenSSL to 1.1.1d.
- Update
libuvto 1.34.0. - Update TypeScript version.
- Update usrsctp dependency (it fixes a potential wrong memory access).
- More details in the reported issue: sctplab/usrsctp#408
- Fix
versiongetter.
SctpAssociation.cpp: Initialize theusrsctpsocket in the class constructor. Fixes #348.
- Fix usage of a deallocated
RTC::TcpConnectioninstance under heavy CPU usage due to mediasoup deleting the instance in the middle of a receiving iteration. Fixes #333.- More details in the commit: https://github.com/versatica/mediasoup/commit/49824baf102ab6d2b01e5bca565c29b8ac0fec22
- IPv6 fix: Use
INET6_ADDRSTRLENinstead ofINET_ADDRSTRLEN.
- Add
consumer.setPriority()andconsumer.priorityAPI 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). - Make video
SimpleConsumersplay the BWE game by helping in probation generation and bitrate distribution. - Add
consumer.preferredLayersgetter. - Rename
enablePacketEvent()and "packet" event toenableTraceEvent()and "trace" event (sorry SEMVER). - Transport: Add a new "trace" event of type "bwe" with detailed information about bitrates.
- Improve "packet" event by not firing both "keyframe" and "rtp" types for the same RTP packet.
- Add type "keyframe" as a valid type for "packet" event in
ProducersandConsumers.
- Add transport-cc bandwidth estimation and congestion control in sender and receiver side.
- Run in Windows.
- Rewrite to TypeScript.
- Tons of improvements.
- Fix TCP leak (#325).
PlainRtpTransport: Fix comedia mode.
RateCalculator: improve efficiency inGetRate()method (#324).
RtpDataCounter: use window size of 2500 ms instead of 1000 ms.- Fixes false "lack of RTP" detection in some screen sharing usages with simulcast.
- Fixes #312.
- Add RTCP Extended Reports for RTT calculation on receiver RTP stream (thanks @yangjinechofor for initial pull request #314).
- Make
mediasoup-workercompile in Armbian Debian Buster (thanks @krishisola, fixes #321).
- Add DataChannel support via DataProducers and DataConsumers (#10).
- SRTP: Add support for AEAD GCM (#320).
PipeConsumer.cpp: Fix RTCP generation (thanks @vpalmisano).
- VP8 and H264: Fix regression in 3.1.5 that produces lot of changes in current temporal layer detection.
- VP8 and H264: Allow packets without temporal layer information even if N temporal layers were announced.
- Add
-fPICincflagsto compile in x86-64. Fixes #315.
- Set the sender SSRC on PLI and FIR requests related thread.
- Workaround to detect H264 key frames when Chrome uses external encoder (related issue). Fixes #313.
- Improve
GetBitratePriority()method inSimulcastConsumerandSvcConsumerby checking the total bitrate of all temporal layers in a given producer stream or spatial layer.
- Add SVC support. It includes VP9 full SVC and VP9 K-SVC as implemented by libwebrtc.
- Prefer Python 2 (if available) over Python 3. This is because there are yet pending issues with gyp + Python 3.
- Do not require Python 2 to compile mediasoup worker (#207). Both Python 2 and 3 can now be used.
- Codecs: Improve temporal layer switching in VP8 and H264.
- Skip worker compilation if
MEDIASOUP_WORKER_BINenvironment variable is given (#309). This makes it possible to install mediasoup in platforms in which, somehow, gcc > 4.8 is not available duringnpm install mediasoupbut it's available later. - Fix
RtpStreamRecv::TransmissionCounter::GetBitrate().
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).
RtpStreamSend::ReceiveRtcpReceiverReport(): improverttcalculation if no Sender Report info is reported in received Received Report.- Update
libuvto version 1.29.1.
- VP8 & H264: Improve temporal layer switching.
- RTP frame-marking: Add some missing checks.
- Fix regression in proxied RTP header extensions.
- Add support for frame-marking RTP extension and use it to enable temporal layers switching in H264 codec (#305).
- Improve RTP probation for simulcast/svc consumers by using proper RTP retransmission with increasing sequence number.
- Simulcast: Improve timestamps extra offset handling by having a map of extra offsets indexed by received timestamps. This helps in case of packet retransmission.
- Simulcast: proper RTP stream switching by rewriting packet timestamp with a new timestamp calculated from the SenderReports' NTP relationship.
- Fix crash in
SimulcastConsumer::IncreaseLayer()with Safari and H264 (#300).
- v3 is here!
RtpStreamSend.cpp: Fix a crash inStorePacket()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).- Update deps.
- Fix usage of a deallocated
RTC::TcpConnectioninstance under heavy CPU usage due to mediasoup deleting the instance in the middle of a receiving iteration.
- Improve build system by using all available CPU cores in parallel.
- Don't mandate server port range to be >= 99.
- Fix NACK retransmissions.
- Fix TCP leak (#325).
- Make
mediasoup-workercompile in Armbian Debian Buster (thanks @krishisola, fixes #321). - Update deps.
- Fix RTCP Receiver Report handling.
- Update deps.
- Simulcast: Increase profiles one by one unless explicitly forced (fixes #188).
PlainRtpTransport.js: Add missing methods and events.
- Remove a potential crash if a single
encodingis given in the ProducerrtpParametersand it has aprofilevalue.
- 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).
- Fix wrong destruction of Transports in Router.cpp that generates 100% CPU usage in
mediasoup-workerprocesses.
- Fix a port leak when a WebRtcTransport is remotely closed due to a DTLS close alert (thanks @artushin for reporting it in #259).
- RtpPacket: Fix Two-Byte header extensions parsing.
- Upgrade again to OpenSSL 1.1.0j (20 Nov 2018) after adding a workaround for issue #257.
- Downgrade OpenSSL to version 1.1.0h (27 Mar 2018) until issue #257 is fixed.
- C++: Remove all
Destroy()class methods and no longer dodelete this. - Update libuv to 1.24.1.
- Update OpenSSL to 1.1.0g.
- worker: Internal refactor and code cleanup.
- Remove announced support for certain RTCP feedback types that mediasoup does nothing with (and avoid forwarding them to the remote RTP sender).
- fuzzer: fix some wrong memory access in
RtpPacket::Dump()andStunMessage::Dump()(just used during development).
- Integrate libFuzzer into mediasoup (documentation in the
docfolder). Extensive testing done. Several heap-buffer-overflow and memory leaks fixed.
Producer.cpp: RemoveUpdateRtpParameters(). It was broken since Consumers were not notified about profile removed and so on, so they may crash.Producer.cpp: Remove some maps and simplify streams handling by having a singlemapSsrcRtpStreamInfo. Just keepmapActiveProfilesbecauseGetActiveProfiles()` method needs it.Producer::MayNeedNewStream(): Ignore new media streams with new SSRC if its RID is already in use by other media stream (fixes #235).- Fix a bad memory access when using two byte RTP header extensions.
Server.js: If a worker crashes make sure_latestWorkerIdxbecomes 0.
server.Room(): Assign workers incrementally or explicitly via newworkerIdxargument.- Add
server.numWorkersgetter.
- Don't announce
muxIdnor RTP MID extension support inConsumerRTP parameters.
- Enable RTP MID extension again.
- Disable RTP MID extension until #230 is fixed.
- Add RTP MID extension support.
- Do not close
Transporton ICE disconnected (as it would prevent ICE restart on "recv" TCP transports).
- Improve codec matching.
- Fix audio codec matching when
channelsparameter is not given.
- Make
PlainRtpTransportnot leak if port allocation fails (related issue #224).
- Fix a crash in when no more RTP ports were available (see related issue #222).
- Update dependencies.
- Allow non WebRTC peers to create plain RTP transports (no ICE/DTLS/SRTP but just plain RTP and RTCP) for sending and receiving media.
- Fix C++ syntax to avoid an error when building the worker with clang 8.0.0 (OSX 10.11.6).
Channel.js: UpgradeREQUEST_TIMEOUTto 20 seconds to avoid timeout errors when the Node or worker thread usage is too high (related to this issue).
- H264: Check if there is room for the indicated NAL unit size (thanks @ggarber).
- H264: Code cleanup.
- Add new "spy" feature. A "spy" peer cannot produce media and is invisible for other peers in the room.
- Fix H264 simulcast by properly detecting when the profile switching should be done.
- Fix a crash in
Consumer::GetStats()(see related issue #196).
- Add H264 simulcast capability.
- Avoid calling deprecated (NOOP)
SSL_CTX_set_ecdh_auto()function in OpenSSL >= 1.1.0.
- Fix #4: Avoid DTLS handshake fragmentation.
- Fix #196: Crash in
Consumer::getStats()due to wrongtargetProfile.
- Improve issue #209.
- Fix #209:
DtlsTransport: don't crash when signaled fingerprint and DTLS fingerprint do not match (thanks @yangjinecho for reporting it).
- Update Node and C/C++ dependencies.
- Improve C++ usage (remove "warning: missing initializer for member" [-Wmissing-field-initializers]).
- Update Travis-CI settings.
- Make
PlainRtpTransportalso send RTCP SR/RR reports (thanks @artushin for reporting).
- Fix #193:
preferTcpnot honored (thanks @artushin).
- Avoid crash when no remote IP/port is given.
- Add
handledandunhandledevents toConsumer.
- Fix #185: Consumer: initialize effective profile to 'NONE' (thanks @artushin).
- Fix #186: NackGenerator code being executed after instance deletion (thanks @baiyufei).
- Fix #183: Always reset the effective
Consumerprofile when removed (thanks @thehappycoder).
- Make ICE+DTLS more flexible by allowing sending DTLS handshake when ICE is just connected.
- Disable stats periodic retrieval also on remote closure of
ProducerandWebRtcTransport.
- Fix #180: Added missing include
cmathso thatstd::roundcan be used (thanks @jacobEAdamson).
- Fix #173: Avoid buffer overflow in
()(thanks @lightmare). - Improve stream layers management in
Consumerby using the newRtpMonitorclass.
- Fix #164: Sometimes video freezes forever (no RTP received in browser at all).
- Fix #160: Assert error in
RTC::Consumer::GetStats().
- Fix #159: Don’t rely on VP8 payload descriptor flags to assure the existence of data.
- Fix #160: Reset
targetProfilewhen the corresponding profile is removed.
- worker: Fix crash when VP8 payload has no
PictureId.
- worker: Remove wrong
assertonProducer::DeactivateStreamProfiles().
- Update README file.
- New design based on
ProducersandConsumerplus a mediasoup protocol and the mediasoup-client client side SDK.
- Fix a crash due to RTX packet processing while the associated
NackGeneratoris not yet created.
- Habemus RTX (RFC 4588) for proper RTP retransmission.
- Fix an issue in
buffer.toString()that makes mediasoup fail in Node 8. - Update libuv to version 1.12.0.
- Add support for ICE renomination.
- Fix a SDP negotiation issue when the remote peer does not have compatible codecs.
- Add video codecs supported by Microsoft Edge.
RtpReceiver: generate RTCP PLI when "rtpraw" or "rtpobject" event listener is set.
RtpReceiver: fix an error producing packets when "rtpobject" event is set.
RtpSender: allowdisable()/enable()without forcing SDP renegotiation (#114).
- Add
Room.on('audiolevels')event.
- Set a maximum value of 1500 bytes for packet storage in
RtpStreamSend.
- Avoid possible segfault if
RemoteBitrateEstimatorgenerates a bandwidth estimation with zero SSRCs.
- First stable release.