← Back to all sparks
M

mediasoup

MEETINGS
Velocity6.3

Open-source WebRTC SFU library for building multiparty video conferencing

After weeks of one-line subchannel patches, mediasoup rebuilt its RTCP timing model.

webrtcsfurtcpcapture-time-syncrust-bindingsdata-channels
Current state
The Rust line had been shipping single-PR point releases every few days, nearly all of them subchannel plumbing for DataConsumers over pipe transports plus the occasional crash fix. 0.26.0 breaks that pattern with a seven-PR reworking of how RTCP Sender Reports are generated, moving them off RTP packet arrival time and onto an estimate of when the media was actually captured. The 0.24.0 release earlier in the window also carried real security work — constant-time MAC comparison and fixes for an OOB write and an SCTP integer overflow.
Where it's heading
Two threads run through this window: finishing the subchannel mechanism so pipe transports behave like direct ones, and tightening timing correctness in the media path. The new RemoteClockOffsetEstimator and RemoteCaptureTimeEstimator classes, plus abs-capture-time rewriting in the simulcast manager, are foundations rather than endpoints — they give the worker a notion of remote capture instants it did not previously have. Expect that foundation to be used by more than Sender Reports.
Prediction
The capture-time estimators look like groundwork for synchronization and delay features beyond Sender Reports; the near-term releases will likely be fixes shaking out the new timing path across simulcast and pipe transports.

Recent moves

  1. 1d ago

    mediasoup rebuilds RTCP Sender Reports around media capture time

    ⚡ SPARK

    The largest release in this window by a wide margin: RTCP Sender Reports are now generated from an estimate of when media was captured rather than when packets arrived, backed by two new estimator classes and a simulcast-side fix for abs-capture-time rewriting. It is the first change in weeks that alters the media pipeline rather than the data-channel plumbing.

    View source ↗
  2. 8d ago

    mediasoup verifies DataConsumer subchannels before cloning

    A single-PR safety fix validating DataConsumer subchannels before the message is cloned. Routine hardening in the subchannel thread that dominated this release series.

    View source ↗
  3. 12d ago

    mediasoup stops checking ignoredSubchannel on piped DataConsumers

    Drops the ignoredSubchannel check for piped DataConsumers, correcting behavior introduced while the subchannel mechanism was being extended to pipe transports.

    View source ↗
  4. 15d ago

    mediasoup adds ignored_subchannel to DirectDataProducer.send

    Adds an optional ignored_subchannel argument to DirectDataProducer.send(), giving callers per-message control over subchannel delivery. A small but real API surface addition in the subchannel arc.

    View source ↗
  5. 18d ago

    mediasoup makes DataProducerOptions::new_pipe_transport public

    Makes DataProducerOptions::new_pipe_transport() public. Visibility housekeeping that unblocks pipe transport use from outside the crate.

    View source ↗
  6. 20d ago

    mediasoup handles subchannels in pipe DataConsumers

    Handles subchannels in pipe DataConsumers, another increment in bringing pipe transports to parity with direct ones.

    View source ↗