Changing rtp-level-relay-type in the Videobridge


We are using the Jitsi Videobridge standalone, controlling it via the Rest interface. We have a scenario where we would like to switch rtp-level-relay-type from translator to mixer on-the-fly in an existing conference, in connection with a new participant joining. We understand that this is not supported functionality yet (there are TODOs hinting at that in the code), but we are trying to get it working and are looking for input if anyone out there might have some ideas …

What we do in RtcChannel, is to stop all audio streams which are not of MIXER type, then set them to MIXER type using setRTPLevelRelayType and try to trigger a restart. But the effect is what is described below. We might not manage to properly get rid of the old RTPTranslator and corresponding output streams related to the translator … ?

What seems so work for us, is to get the AudioMixerMediaDevice started, producing correct output (we have dumped and verified the audio streams). New clients connecting after the switch, are receiving mixed and good audio on a new, single, mixed ssrc. The clients connected before the switch however, gets bad audio played back. Looking at what is received, they get the new mixed ssrc in the last sdp. No data is however received on that ssrc. But mixed audio data, together with something else is coming on one of the old ssrc from before the switch. One of the clients typically get their own input stream back and the other get a (very short) echo.

Any comments, high level ideas on what needs to be done to get this working, or other input or experiences would be much appreciated!