bridge_softmix: Reduce topology cloning and improve renegotiation.
authorJoshua Colp <jcolp@digium.com>
Sat, 14 Oct 2017 19:41:37 +0000 (19:41 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 17 Oct 2017 10:45:40 +0000 (05:45 -0500)
commit5d8c517960d4d807f4b242a775c232bbcf18c044
tree797efb8925fd47019def05f058c2e0261f5c851c
parent3a2b132411c88d2b2494c3085c79253256bda053
bridge_softmix: Reduce topology cloning and improve renegotiation.

As channels join and leave an SFU the bridge_softmix module
needs to renegotiate to add and remove their streams from
the other participants. Previously this was done by constructing
the ideal stream topology every time but in the case of leave
this was incomplete.

This change makes it so bridge_softmix keeps an ideal stream
topology for each channel and uses it when making changes. This
ensures that when we request a renegotiation we are always
certain that we are aiming for the best stream topology
possible. In the case of a channel leaving this ensures that
we try to have an existing participant fill their place if
a participant has a fixed limit on the maximum number of video
streams they allow.

ASTERISK-27354

Change-Id: I58070f421ddeadd2844a33b869b052630cf2e514
bridges/bridge_softmix.c
bridges/bridge_softmix/include/bridge_softmix_internal.h