[asterisk-dev] extending bridging API

Joshua Colp jcolp at digium.com
Tue Feb 9 12:30:10 CST 2010


----- "Klaus Darilion" <klaus.mailinglists at pernau.at> wrote:

> 
> What exactly is the "bridging technology"? Is it the respective 
> implementation in bridges/ directory?

The bridging technology is what receives frames and sends them to the
other channels in the bridge. For example if there are 3 or more people
in a bridge then the technology has to mix audio together. They do
indeed exist in the bridges directory.
 
> >> Where would this kind of features be implemented? Adding a new
> bridge
> >>
> >> implementation in the bridges/ directory or by adding the code to
> >> main/bridging.c?
> >
> > The bridging core itself doesn't care about frames like this, you
> would have
> > to extend it to intercept them.
> 
> I played around with the app_confbridge (unmodified). I dial with 2
> SIP 
> clients into the conference. When one SIP clients puts the call on
> hold, 
> I see incoming AST_CONTROL_HOLD from the respective channel which gets
> 
> forwarded to the other channel (on the other SIP client gets a hold
> tone).
> 
> Doing the same with 3 participants, the AST_CONTROL_HOLD is NOT 
> forwarded to the other channels.
> 
> I searched through app_confbridge.c, main/bridging.c and bridge/*.c
> but 
> I can not find code where this AST_CONTROL_HOLD is forwarded. Which
> file 
> controls the forwarding of the AST_CONTROL_HOLD?

For a 2 person bridge it would have been using bridge_simple or
bridge_multiplexed which simply forwards frames back and forth not
caring that much about them.

For a 3 person bridge it would have been using bridge_softmix which is more
careful and only forwards some kinds of frames.

-- 
Joshua Colp
Digium, Inc. | Software Developer
445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
Check us out at:  www.digium.com  & www.asterisk.org



More information about the asterisk-dev mailing list