Expand description
A conference: every party hears every other party, and never themselves.
Unlike a crate::bridge::Bridge, a conference cannot pass bytes through. Mixing happens on
samples, so every leg is decoded on the way in and encoded on the way out whatever codec it
negotiated. That is not a shortcoming to be optimised away later — adding two µ-law codes is
not adding two amplitudes, and a mixer that tried would produce noise.
The shape is a clock, not a chain of forwards. A bridge can forward each packet as it arrives because there is exactly one thing to send it to; a mixer has to decide when a frame is complete, because it is waiting on N participants who will not arrive together. So one task ticks at the packet interval, takes whatever each participant has produced since the last tick, and sends each of them the sum of the others.
A participant who has said nothing contributes silence, which is exactly right: the mix goes
out on time and the quiet participant is simply quiet. The alternative — waiting for
everyone — makes the whole conference as late as its worst connection.
Experimental (A-8): as with super::bridge, real over sessions you own and not
reachable from a Call (C-6).
Structs§
- Conference
- Several calls mixed together.
Enums§
- Conference
Error - A conference worker configuration that cannot make forward progress.