mediasoup 3.13.0 released with FlatBuffers and more!

mediasoup 3.13.0 has been released. It replaces JSON based messages with FlatBuffers in the internal communication between Node/Rust and Worker. And it also comes with new features! (see below).

FlatBuffers

  • Switch from JSON based messages to flatbuffers (PR #1064).

JSON vs FlatBuffers overview:

  • JSON parsing is CPU intensive.
  • JSON is not type safe.
  • flatbuffers does not parse the buffer. Reading a message takes 0ms.
  • flatbuffers is type safe since code (C++, Typescript, Rust, etc) is autogenerated out of the schema definitions.

Extras that come along with the migration to FlatBuffers:

  • There is now a single Channel for worker communication (previously there were 2, Channel and PayloadChannel).
  • Each message sent Node/Rust → Worker requires a single write() call in Channel (previously 2 calls per message were needed in Channel and 4 in PayloadChannel).
  • Each message sent Worker → Node/Rust previously executed two extra calls to memcpy() that do not happen now.

New Features

  • Add ListenInfo in all transports and send/recv buffer size options (PR #1084).
  • Add optional rtcpListenInfo in PlainTransportOptions (PR #1099).
  • Add pause/resume API in DataProducer and DataConsumer (PR #1104).
  • DataChannel subchannels feature (PR #1152).

Fixes

  • Worker: Make DTLS fragment stay within MTU size range (PR #1156).

mediasoup-client 3.7.0

mediasoup-client 3.7.0 has been released. It doesn’t come with real changes other than some ones in TypeScript types to make it perfectly compatible with mediasoup 3.13.0.

Congratulations! This was a really big one! Thanks a lot for all your efforts guys!

Beautiful! :tada:

Thanks for all the hard work you’ve done, replacing JSON with FlatBuffers. Looking forward to start testing it!