[asterisk-dev] [Code Review] Add mute all participants; play participant count to ConfBridge

Tony Mountifield tony at softins.co.uk
Thu Nov 3 18:09:12 CDT 2011

In article <1280234610.214498.1320341497520.JavaMail.root at zimbra>,
David Vossel <dvossel at digium.com> wrote:
> ----- Original Message -----
> > From: "Tony Mountifield" softins.co.uk>
> > To: asterisk-dev at lists.digium.com
> > Sent: Thursday, November 3, 2011 12:22:20 PM
> > Subject: Re: [asterisk-dev] [Code Review] Add mute all participants; play participant
> count to ConfBridge
> > 
> > Since the status of being muted is an attribute of an individual
> > conference member, it should be announced separately to each user on
> > their channel. Even if there is a command to mute all, they should
> > still be told individually, rather than in a conference announcement.
> > Then if the command doesn't mute admins, it still works correctly,
> > without misleading anyone!
> > 
> > I have custom modifications to Meetme that work exactly like this.
> > 
> > Just my 2p
> Architecturally playing each sound file individually to each participant is a problem. 
> Because of the way things are done right now, whatever sound files we play block the channel
> that is issuing the mute all action and must be played in sequence rather than at the same
> time.  If we have 100 participants it could take 3 minutes just to tell them they are all
> muted.  In order to do the playback independently of one another, we'd have to figure out a
> way to signal each participants channel thread to break them out of the conference and play
> the sound file, then put them back in.  The synchronization required to do that would be
> invasive.

What I do in Meetme is have a muted flag in each user's user struct,
and check it in the user's own conf_run loop. When it detects that the
desired mute state is different from the actual mute state, it calls
the ioctl to mute or unmute the user, and then streams the appropriate
file to tell the user. It also generates an AMI event.

So when doing a mute all, I just traverse the user list and change
all the mute request flags. Then each channel plays its own notification
and they all hear them concurrently.

I also use this mute request flag for individual mute/unmute requests,
via AMI actions or the *1 menu option.

I don't yet know the structure of ConfBridge, unfortunately.


Tony Mountifield
Work: tony at softins.co.uk - http://www.softins.co.uk
Play: tony at mountifield.org - http://tony.mountifield.org

More information about the asterisk-dev mailing list