Skip to content

Latest commit

 

History

History
792 lines (371 loc) · 20.3 KB

CHANGELOG.md

File metadata and controls

792 lines (371 loc) · 20.3 KB

Changelog

3.5.13

  • Simplify GetDesiredBitrate() in SimulcastConsumer and SvcConsumer.
  • Update libuv to 1.38.0.

3.5.12

  • SeqManager.cpp: Improve performance.
    • PR #398 (credits to @penguinol).

3.5.11

  • 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 eslint and jest major versions.

3.5.10

  • SimulcastConsumer.cpp: Fix IncreaseLayer() method (fixes #394).
  • Udpate Node deps.

3.5.9

  • libwebrtc: Apply patch by @sspanak and @Ivaka to avoid crash. Related issue: #357.
  • PortManager.cpp: Do not use UV_UDP_RECVMMSG in Windows due to a bug in libuv 1.37.0.
  • Update Node deps.

3.5.8

  • Enable UV_UDP_RECVMMSG:
    • Upgrade libuv to 1.37.0.
    • Use uv_udp_init_ex() with UV_UDP_RECVMMSG flag.
    • Add our own uv.gyp now that libuv has removed support for GYP (fixes #384).

3.5.7

  • Fix crash in mediasoup-worker due to conversion from uint64_t to int64_t (used within libwebrtc code. Fixes #357.
  • Update usrsctp library.
  • Update Node deps.

3.5.6

  • SeqManager.cpp: Fix video lag after a long time.
    • Fixes #372 (thanks @penguinol for reporting it and giving the solution).

3.5.5

  • UdpSocket.cpp: Revert uv__udp_recvmmsg() usage since it notifies about received UDP packets in reverse order. Feature on hold until fixed.

3.5.4

  • Transport.cpp: Enable transport congestion client for the first video Consumer, no matter it's uses simulcast, SVC or a single stream.
  • Update libuv to 1.35.0.
  • UdpSocket.cpp: Ensure the new libuv's uv__udp_recvmmsg() is used, which is more efficient.

3.5.3

  • PlainTransport: Remove multiSource option. It was a hack nobody should use.

3.5.2

  • Enable MID RTP extension in mediasoup to receivers direction (for consumers).
    • This requires mediasoup-client 3.5.2 to work.

3.5.1

  • PlainTransport: Fix event name: 'rtcpTuple' => 'rtcptuple'.

3.5.0

  • 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 PlainRtpTransport to PlainTransport everywhere (classes, methods, TypeScript types, etc). Keep previous names and mark them as DEPRECATED.
  • Fix vulnarability in IPv6 parser.

3.4.13

  • Update uuid dep to 7.0.X (new API).
  • Fix crash due wrong array index in PipeConsumer::FillJson().
    • Fixes #364

3.4.12

  • TypeScript: generate es2020 instead of es6.
  • Update usrsctp library.
    • Fixes #362 (thanks @chvarlam for reporting it).

3.4.11

  • IceServer.cpp: Reject received STUN Binding request with 487 if remote peer indicates ICE-CONTROLLED into it.

3.4.10

  • ProducerOptions: Rename keyFrameWaitTime option to keyFrameRequestDelay and make it work as expected.

3.4.9

  • Add Utils::Json::IsPositiveInteger() to not rely on is_number_unsigned() of json lib, which is unreliable due to its design.
  • Avoid ES6 export default and always use named export.
  • router.pipeToRouter(): Ensure a single PipeTransport pair is created between router1 and router2.
    • 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.
  • Add keyFrameWaitTime option to ProducerOptions.
  • Update Node and C++ deps.

3.4.8

  • libsrtp.gyp: Fix regression in mediasoup for Windows.
    • libsrtp.gyp: Modernize it based on the new BUILD.gn in 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
  • gyp dependency: Add support for Microsoft Visual Studio 2019.
    • Modify our own gyp sources to fix the issue.
    • CL uploaded to GYP project with the fix.
    • Issue details: sctplab/usrsctp#347

3.4.7

  • PortManager.cpp: 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.
  • Do not copy catch.hpp into test/include/ but make the GYP mediasoup-worker-test target include the corresponding folder in deps/catch.

3.4.6

  • Update libsrtp to 2.3.0.
  • Update ESLint and TypeScript deps.

3.4.5

  • Update deps.
  • Fix text in ./github/Bug_Report.md so it no longer references the deprecated mailing list.

3.4.4

  • Transport.cpp: Ignore RTCP SDES packets (we don't do anything with them anyway).
  • Producer and Consumer stats: Always show roundTripTime (even if calculated value is 0) after a roundTripTime > 0 has been seen.

3.4.3

  • Transport.cpp: Fix RTCP FIR processing:
    • 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.
    • Fixes #350 (thanks @j1elo for reporting and documenting the issue).

3.4.2

  • SctpAssociation.cpp: Improve/fix logs.
  • Improve Node EventEmitter events inline documentation.
  • test-node-sctp.js: Wait for SCTP association to be open before sending data.

3.4.1

  • Improve mediasoup-worker build system by using sh instead of bash and default to 4 cores (thanks @smoke, PR #349).

3.4.0

  • Add worker.getResourceUsage() API.
  • Update OpenSSL to 1.1.1d.
  • Update libuv to 1.34.0.
  • Update TypeScript and ESLint NPM dependencies.

3.3.8

  • Update usrsctp dependency (it fixes a potential wrong memory access).

3.3.7

  • Fix version getter.

3.3.6

  • SctpAssociation.cpp: Initialize the usrsctp socket in the class constructor. Fixes #348.

3.3.5

3.3.4

  • IPv6 fix: Use INET6_ADDRSTRLEN instead of INET_ADDRSTRLEN.

3.3.3

  • 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).
  • Make video SimpleConsumers play the BWE game by helping in probation generation and bitrate distribution.
  • Add consumer.preferredLayers getter.
  • Rename enablePacketEvent() and "packet" event to enableTraceEvent() and "trace" event (sorry SEMVER).
  • Transport: Add a new "trace" event of type "bwe" with detailed information about bitrates.

3.3.2

  • Improve "packet" event by not firing both "keyframe" and "rtp" types for the same RTP packet.

3.3.1

  • Add type "keyframe" as a valid type for "packet" event in Producers and Consumers.

3.3.0

  • Add transport-cc bandwidth estimation and congestion control in sender and receiver side.
  • Run in Windows.
  • Rewrite to TypeScript.
  • Tons of improvements.

3.2.5

  • Fix TCP leak (#325).

3.2.4

  • PlainRtpTransport: Fix comedia mode.

3.2.3

  • RateCalculator: improve efficiency in GetRate() method (#324).

3.2.2

  • 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.

3.2.1

  • Add RTCP Extended Reports for RTT calculation on receiver RTP stream (thanks @yangjinechofor for initial pull request #314).
  • Make mediasoup-worker compile in Armbian Debian Buster (thanks @krishisola, fixes #321).

3.2.0

  • Add DataChannel support via DataProducers and DataConsumers (#10).
  • SRTP: Add support for AEAD GCM (#320).

3.1.7

  • PipeConsumer.cpp: Fix RTCP generation (thanks @vpalmisano).

3.1.6

  • VP8 and H264: Fix regression in 3.1.5 that produces lot of changes in current temporal layer detection.

3.1.5

  • VP8 and H264: Allow packets without temporal layer information even if N temporal layers were announced.

3.1.4

  • Add -fPIC in cflags to compile in x86-64. Fixes #315.

3.1.3

3.1.2

  • Workaround to detect H264 key frames when Chrome uses external encoder (related issue). Fixes #313.

3.1.1

  • Improve GetBitratePriority() method in SimulcastConsumer and SvcConsumer by checking the total bitrate of all temporal layers in a given producer stream or spatial layer.

3.1.0

  • 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.

3.0.12

  • Do not require Python 2 to compile mediasoup worker (#207). Both Python 2 and 3 can now be used.

3.0.11

  • Codecs: Improve temporal layer switching in VP8 and H264.
  • 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.
  • Fix RtpStreamRecv::TransmissionCounter::GetBitrate().

3.0.10

  • 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).

3.0.9

  • RtpStreamSend::ReceiveRtcpReceiverReport(): improve rtt calculation if no Sender Report info is reported in received Received Report.
  • Update libuv to version 1.29.1.

3.0.8

  • VP8 & H264: Improve temporal layer switching.

3.0.7

  • RTP frame-marking: Add some missing checks.

3.0.6

  • Fix regression in proxied RTP header extensions.

3.0.5

  • Add support for frame-marking RTP extensions and use it to enable temporal layers switching in H264 codec (#305).

3.0.4

  • Improve RTP probation for simulcast/svc consumers by using proper RTP retransmission with increasing sequence number.

3.0.3

  • Simulcast: Improve timestamps extra offset handling by having a map of extra offsets indexed by received timestamps. This helps in case of packet retransmission.

3.0.2

  • Simulcast: proper RTP stream switching by rewriting packet timestamp with a new timestamp calculated from the SenderReports' NTP relationship.

3.0.1

  • Fix crash in SimulcastConsumer::IncreaseLayer() with Safari and H264 (#300).

3.0.0

  • v3 is here!

2.6.19

  • 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).
  • Update deps.

2.6.18

  • 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.

2.6.17

  • Improve build system by using all available CPU cores in parallel.

2.6.16

  • Don't mandate server port range to be >= 99.

2.6.15

  • Fix NACK retransmissions.

2.6.14

  • Fix TCP leak (#325).

2.6.13

  • Make mediasoup-worker compile in Armbian Debian Buster (thanks @krishisola, fixes #321).
  • Update deps.

2.6.12

  • Fix RTCP Receiver Report handling.

2.6.11

  • Update deps.
  • Simulcast: Increase profiles one by one unless explicitly forced (fixes #188).

2.6.10

  • PlainRtpTransport.js: Add missing methods and events.

2.6.9

  • Remove a potential crash if a single encoding is given in the Producer rtpParameters and it has a profile value.

2.6.8

  • 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).

2.6.7

  • Fix wrong destruction of Transports in Router.cpp that generates 100% CPU usage in mediasoup-worker processes.

2.6.6

  • Fix a port leak when a WebRtcTransport is remotely closed due to a DTLS close alert (thanks @artushin for reporting it in #259).

2.6.5

  • RtpPacket: Fix Two-Byte header extensions parsing.

2.6.4

  • Upgrade again to OpenSSL 1.1.0j (20 Nov 2018) after adding a workaround for issue #257.

2.6.3

  • Downgrade OpenSSL to version 1.1.0h (27 Mar 2018) until issue #257 is fixed.

2.6.2

  • C++: Remove all Destroy() class methods and no longer do delete this.
  • Update libuv to 1.24.1.
  • Update OpenSSL to 1.1.0g.

2.6.1

  • 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() and StunMessage::Dump() (just used during development).

2.6.0

  • Integrate libFuzzer into mediasoup (documentation in the doc folder). Extensive testing done. Several heap-buffer-overflow and memory leaks fixed.

2.5.6

  • Producer.cpp: Remove UpdateRtpParameters(). 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 single mapSsrcRtpStreamInfo. Just keep mapActiveProfilesbecauseGetActiveProfiles()` 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.

2.5.5

  • Server.js: If a worker crashes make sure _latestWorkerIdx becomes 0.

2.5.4

  • server.Room(): Assign workers incrementally or explicitly via new workerIdx argument.
  • Add server.numWorkers getter.

2.5.3

  • Don't announce muxId nor RTP MID extension support in Consumer RTP parameters.

2.5.2

  • Enable RTP MID extension again.

2.5.1

  • Disable RTP MID extension until #230 is fixed.

2.5.0

  • Add RTP MID extension support.

2.4.6

  • Do not close Transport on ICE disconnected (as it would prevent ICE restart on "recv" TCP transports).

2.4.5

  • Improve codec matching.

2.4.4

  • Fix audio codec matching when channels parameter is not given.

2.4.3

  • Make PlainRtpTransport not leak if port allocation fails (related issue #224).

2.4.2

  • Fix a crash in when no more RTP ports were available (see related issue #222).

2.4.1

  • Update dependencies.

2.4.0

  • Allow non WebRTC peers to create plain RTP transports (no ICE/DTLS/SRTP but just plain RTP and RTCP) for sending and receiving media.

2.3.3

  • Fix C++ syntax to avoid an error when building the worker with clang 8.0.0 (OSX 10.11.6).

2.3.2

  • 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).

2.3.1

  • H264: Check if there is room for the indicated NAL unit size (thanks @ggarber).
  • H264: Code cleanup.

2.3.0

  • Add new "spy" feature. A "spy" peer cannot produce media and is invisible for other peers in the room.

2.2.7

  • Fix H264 simulcast by properly detecting when the profile switching should be done.
  • Fix a crash in Consumer::GetStats() (see related issue #196).

2.2.6

  • Add H264 simulcast capability.

2.2.5

  • Avoid calling deprecated (NOOP) SSL_CTX_set_ecdh_auto() function in OpenSSL >= 1.1.0.

2.2.4

  • Fix #4: Avoid DTLS handshake fragmentation.

2.2.3

  • Fix #196: Crash in Consumer::getStats() due to wrong targetProfile.

2.2.2

2.2.1

  • Fix #209: DtlsTransport: don't crash when signaled fingerprint and DTLS fingerprint do not match (thanks @yangjinecho for reporting it).

2.2.0

  • Update Node and C/C++ dependencies.

2.1.0

  • Add localIP option for room.createRtpStreamer() and transport.startMirroring() PR #199.

2.0.16

  • Improve C++ usage (remove "warning: missing initializer for member" [-Wmissing-field-initializers]).
  • Update Travis-CI settings.

2.0.15

  • Make PlainRtpTransport also send RTCP SR/RR reports (thanks @artushin for reporting).

2.0.14

  • Fix #193: preferTcp not honored (thanks @artushin).

2.0.13

  • Avoid crash when no remote IP/port is given.

2.0.12

  • Add handled and unhandled events to Consumer.

2.0.11

  • Fix #185: Consumer: initialize effective profile to 'NONE' (thanks @artushin).
  • Fix #186: NackGenerator code being executed after instance deletion (thanks @baiyufei).

2.0.10

  • Fix #183: Always reset the effective Consumer profile when removed (thanks @thehappycoder).

2.0.9

  • Make ICE+DTLS more flexible by allowing sending DTLS handshake when ICE is just connected.

2.0.8

  • Disable stats periodic retrieval also on remote closure of Producer and WebRtcTransport.

2.0.7

  • Fix #180: Added missing include cmath so that std::round can be used (thanks @jacobEAdamson).

2.0.6

  • Fix #173: Avoid buffer overflow in () (thanks @lightmare).
  • Improve stream layers management in Consumer by using the new RtpMonitor class.

2.0.5

  • Fix #164: Sometimes video freezes forever (no RTP received in browser at all).
  • Fix #160: Assert error in RTC::Consumer::GetStats().

2.0.4

  • Fix #159: Don’t rely on VP8 payload descriptor flags to assure the existence of data.
  • Fix #160: Reset targetProfile when the corresponding profile is removed.

2.0.3

  • worker: Fix crash when VP8 payload has no PictureId.

2.0.2

  • worker: Remove wrong assert on Producer::DeactivateStreamProfiles().

2.0.1

  • Update README file.

2.0.0

  • New design based on Producers and Consumer plus a mediasoup protocol and the mediasoup-client client side SDK.

1.2.8

  • Fix a crash due to RTX packet processing while the associated NackGenerator is not yet created.

1.2.7

  • Habemus RTX (RFC 4588) for proper RTP retransmission.

1.2.6

  • Fix an issue in buffer.toString() that makes mediasoup fail in Node 8.
  • Update libuv to version 1.12.0.

1.2.5

1.2.4

  • Fix a SDP negotiation issue when the remote peer does not have compatible codecs.

1.2.3

  • Add video codecs supported by Microsoft Edge.

1.2.2

  • RtpReceiver: generate RTCP PLI when "rtpraw" or "rtpobject" event listener is set.

1.2.1

  • RtpReceiver: fix an error producing packets when "rtpobject" event is set.

1.2.0

  • RtpSender: allow disable()/enable() without forcing SDP renegotiation (#114).

1.1.0

  • Add Room.on('audiolevels') event.

1.0.2

  • Set a maximum value of 1500 bytes for packet storage in RtpStreamSend.

1.0.1

  • Avoid possible segfault if RemoteBitrateEstimator generates a bandwidth estimation with zero SSRCs.

1.0.0

  • First stable release.