Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > f48a783524ef59a067981f2809145349 > files > 4

asterisk-app_conference-0.0.1-0.20051221.1mdv2007.0.i586.rpm

app_conference is a channel-independent conference application.

Design goals
It has several design goals which are different than meetme:

    * It does not require a zap channel for timing.
    * It is very efficient when used with channels which support DTX (silence
	detection/discontinuous transmission).

    * It can do VAD on channels which do not support DTX (although this 
	is more expensive than just mixing them, but less expensive then
	encoding; therefore it might still be a win). 
    * It presents messages on the Monitor interface for determine which 
	speakers are active. 


I believe that people other than myself are using this, but my environment is
pretty rigid, and cases outside of this aren't tested:

    * Some callers come from the PSTN via IAX2 from a box with Zaptel cards, 
	via uLaw.
    * Other callers come from iaxclient based softphones using speex
     	(was GSM) via IAX2 (with DTX). 
    * Some conferences have a single SIP channel which listens in GSM.


Mixing design

    * Minimize encoding/decoding, minimize mixing.
    * Minimize generational loss from trancoding.
    * Usual cases are handled very efficiently:
          o One speaker: That speaker's frame is sent directly to each 
		participant which uses the same codec. It is trancoded 
		_once_ for each additional codec type used by participants.
          o Two speakers: Each speaker gets the other speaker's frames.  
		The two speaker's frames are decoded and mixed, and then 
		encoded _once_ for each codec type used by participants. 


License
Naturally, app_conference is GPL. The CVS also includes parts of libspeex,
which is distributed under it's a BSD-style license.

Getting app_conference
app_conference is available from the 'iaxclient' project on sourceforge:

    * CVS browse: http://cvs.sourceforge.net/viewcvs.py/iaxclient/app_conference/ (cache)
    * Project page: http://sourceforge.net/projects/iaxclient/ (cache) 


Compiling app_conference

    * just like any other asterisk application.
    * Some makefile fiddling may be necessary 


Using app_conference
There is no configuration file. Conferences are created on-the-fly.

Dialplan syntax: Conference(ConferenceName/Flags/Priority[/VADSTART/VADCONTINUE])

    * ConferenceName: Whatever you want to name the conference
    * Flags one of more of the following:
          o M: Moderator (presently same as speaker)
          o S: Speaker
          o L: Listener
          o T: "Telephone caller" (just for stats?).
          o V: Do VAD on this caller
          o D: Use Denoise filter on this caller. 
          o d: Send manager events when DTMF is received.
    * Priority: Currently ignored; was to be a "speaking priority" so a 
	higher priority caller could "override" others.
    * VADSTART: Optional: "probability" to use to detect start of speech.
    * VADCONTINUE: Optional: "probability" to use to detect continuation 
	of speech. 


Features / CLI/Manager Commands

    * conference debug <conference_name> [ on | off ]  
	enable debugging for a conference

    * conference show stats  show conference stats

    * conference play sound <channel-id> <sound-file> [mute]
	play a sound to a conference member, optionally muting them.

Manager Events
app_conference generates several detailed manager events so that applications
interfacing with the manager API can monitor conferences:

    * ConferenceState:  sent as members begin/end speaking.
	Channel: The channel
	State: "speaking" or "silent"

    * ConferenceDTMF: sent when conference members send DTMF to the conference
	Channel: The channel
	Key: The DTMF key send [0-9*#]

    * ConferenceSoundComplete: send when the conference has finished playing 
		a sound to a user	
	Channel: The channel
	Sound: The first 255 bytes of the file requested in conference play 
		sound CLI/Mgr command.	


Benchmarking
It would be nice to have solid benchmarks to present, but a good size 
machine should be able to handle many callers when either (a) they are 
using DTX, or (b) they are listen-only.  It's used often with hundreds of
simultaneous callers.

Discussion
The iaxclient-devel mailing list is probably as good a place as any to discuss.


---

app_conference is brought to you by the letter q, and the number e