[asterisk-dev] Memory failure - channels in meetme

Kevin P. Fleming kpfleming at digium.com
Wed Nov 2 08:57:49 CDT 2011


On 10/31/2011 09:03 AM, Olle E. Johansson wrote:
> Apologize for short memory. Kevin explained on #asterisk-dev the number of Dahdi channels involved in a meetme, but I forgot it and also forgot to copy his explanation. Can we please get the latest version for archives and memory refresh?

I'll try :-)

When a MeetMe conference is established (the first user joins), there is 
a DAHDI pseudo channel (not an Asterisk channel... no ast_channel 
structure here). This channel is used by MeetMe to retrieve the 'common' 
mixed audio to be sent to all non-talking members of the conference, 
rather than retrieving it individually for each non-talking member from 
their own conference channel. This allows for reduced encoding; if there 
are a number of non-talking conference members using the same codec, 
this audio can be encoded once and sent to all of them.

If the first user in the conference is any type of Asterisk channel 
*other than* DAHDI, then a second DAHDI pseudo channel is opened (again, 
no ast_channel involved). This is used to feed that user's audio into 
the conference, and when they are a talker, provide the audio feed that 
should be sent to them. This same step is performed for any additional 
users who subsequently join the conference and are not DAHDI native 
channels.

> A related issue is why I need chan_dahdi for meetme? What's the difference between loading chan_dahdi and using Meetme without it (still using Dahdi kernel modules)?

MeetMe creates a chan_dahdi channel into the conference (so there is an 
ast_channel structure involved) in order to be able to record the 
conference or to play various kinds of audio (recorded conference user 
names, etc.) into the conference. This is necessary for two reasons: 
these items can't be played into the conference using the channel 
associated with any specific conference user (because then they wouldn't 
hear the announcement), and they can't be played into the conference 
using the shared pseudo channel because it doesn't have an ast_channel 
structure associated with it and the Asterisk APIs that do file 
recording and playback only work on ast_channel instances.

This usage of chan_dahdi is not mandatory; if the conference does not 
use any of the 'i', 'I', or 'r' options, there is no need for the 
chan_dahdi channel driver to be loaded, although right now app_meetme 
always tries to use it even if those options weren't specified. It's 
possible this could be optimized, but it would require changing the 
order that some steps are performed in app_meetme (parsing options 
before calling build_conf(), and telling build_conf() whether the 
chan_dahdi channel is going to be needed or not).

-- 
Kevin P. Fleming
Digium, Inc. | Director of Software Technologies
Jabber: kfleming at digium.com | SIP: kpfleming at digium.com | Skype: kpfleming
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