Hi guys,
We have recently implemented ICE Restart mechanism in Licode SFU but it doesn't work as expected.
What you need to know is that for every single mediastream licode generate a new peerconnection.
So the test is done with one publisher, publishing to licode thru a peerconnection (sendonly) and a subscriber, subscribing thru licode with another peerconnection (recvonly).
Licode uses the current master of libnice where ICE restart is implemented.
If we make a restart from the publisher, everything works just fine. In chrome://webrtc-internals we can see the peerconnection changing udp port and if we block all udp traffic, we can see it switching from stun to relay.
So the publisher works flawlessly but when we do the same restart on the subscriber, the video freezes.
It switch candidate and udp port as well and the audio never stop working but the video freezes. (note that this happens in Chrome but also in Firefox, same behavior).
The weird thing is that in chrome://internals everything is going well. the decoded frames increase, the bitrate is correct and if I switch resolution from the publisher (ex. during a simulcast test), I can see the receiver decoded width and height acting accordingly.
We tried different things such as send a keyframe from the publisher on ice restart complete but nothing seems able to make the video works again.
Is there any suggestion you can give to me?
Have a nice day!