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
inPlainTransportOptions
(PR #1099). - Add pause/resume API in
DataProducer
andDataConsumer
(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.