> Lower[ring] the bitrate of everyone’s streams so it doesn’t overwhelm the slow user (i.e. the lowest common denominator)
However, it's still a lowest common denominator solution with respect to what codec is being used. The broadcasting "peer" has to send using a codec that every other peer supports. Essentially that means you're stuck with the lowest common denominator codec.
If the relay server was to instead transcode, then the broadcasting peer could submit a single stream (lower bandwidth) in the best codec it supports. Then the relay server would generate additional streams in various bitrates and codecs (something this solution is trying to avoid).
So unfortunately there's still a trade-off.
The article does mention "Scalable video codecs" as a future improvement. However, using the approach described in this article, we're a long way off taking advantage of them, because whilst there's no transcoding every participant would need to support VP9/AV1.
This is correct, though I wouldn't call them "inferior codecs": all WebRTC capable browsers support both H.264 and VP8 as required by the specs.
[0] https://github.com/jech/galene
[1] https://github.com/pion/rtp/blob/master/codecs/vp9_packet.go
If you're interested in seeing an implementation of an SFU doing simulcast forwarding written in Rust, we (at Signal) recently open sourced our SFU:
https://github.com/signalapp/Signal-Calling-Service/blob/mai...