Posts

Some weeks ago Philipp Hancke presented an awesome analysis of how Google Hangouts uses WebRTC in Chrome. In that blog post he explained that based on the SDP contents Google is using simulcast but didn't entered in the details of how to activate it. So I had a lot of curiosity and thought that it could be great if people (beyond Google) could use this feature so I tried to replicate their behavior.

Step one: Add simulcast ssrcs and "SIM" group to the offer SDP

The first thing I tried is to implement some SDP mangling to make my SDP look like the Hangouts SDP. That means adding 3 substreams grouped by simulcast semantics. This is the code of my quick and dirty implementation:

https://gist.github.com/ggarber/a19b4c33510028b9c657

Result: no simulcast :(Step two?: Add a renegotiation

I
saw a a renegotiation in the initial connection from Google Hangouts
(when there are no other participants) and I thought this
was needed to enable simulcast and implemented it but this…

There is a work in progress in the IETF [1] to define a new MSID attribute to be used in the SDP. This attribute has been defined in the context of WebRTC and it is already being sent by WebRTC endpoints (Firefox and Chrome). This is a typical SDP generated by Chrome:

I was wondering today what RTC stacks I've used in all these years and I though it would be interesting to remember them because somehow you can see the evolution of communications through them. This is the approximate timeline (I'm sure I'm forgetting some):