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.

11 Likes

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!

This topic was automatically closed after 2 days. New replies are no longer allowed.