Tags: bryphe-coder/webrtc
Tags
Use ICE role to set DTLS role in answer When creating answer, check ICE role while determining DTLS role. ORTC thread on how roles are set w3c/ortc#167 (comment) When remote is ice-lite and there is no answering role set, the answer uses the default which is DTLS client. So 'setup' is set as 'active' and answer sent. But, when DTLS transport is started, it checks the ICE role and sets itself as DTLS server (because remote is lite and hence local agent becomes controlling ICE agent). So, both sides end up being DTLS server and nobody sends client hello.
Set up RTP Receivers synchronously Do the set up of RTP receivers synchronously so that they are ready to receive media as soon as signalling to remote side is sent. Once signalling to remote side is sent, the remote can send media at any time and receiver has to be ready. Like the bug mentions, a negotiation quickly followed by a renegotiation left the RTP receivers of the tracks in the second offer not set up. If the tracks in the renegotiation happen to be simulcast tracks, they are missed as browsers send RID only in the first few packets. The problem can be reproduced by introducing a 1 second delay in Downstream direction in Network Link Conditioner and using a modified version of LiveKit JS SDK sample app to force a double negotiation spaced closely. With this change, onTrack fires, but the unhandled warning from RTCP for the highest layer still happens. But, the track fires almost immediately following that warning (less than 5 ms later). So, all the simulcast layers are available. Resolves pion#2054
PreviousNext