[asterisk-dev] [Code Review] Modify bridging to properly evaluate DTMF after first warning is played
Kaloyan Kovachev
kkovachev at varna.net
Wed Feb 18 11:40:28 CST 2009
On Wed, 18 Feb 2009 10:32:01 -0600 (CST), Joshua Colp wrote
> ----- "Kaloyan Kovachev" <kkovachev at varna.net> wrote:
>
> > by changing the config structure (in channel.h) it already makes too
> > much
> > changes, so maybe dedicated variables (and the other changes below)
> > will not
> > add much to that.
>
> It made the minimal changes needed to accomplish fixing the issue.
>
> > other changes:
> > removing of the last variable of ast_generic_bridge - will not harm
> > anything
> > and is used only in channel.c
> > adding feature_start and feature_first_pass variables in config too -
> > will
> > only change channel.c and features.c, but will also make the entire
> > backup
> > config in features.c unnecessary ... removing it will need more
> > changes though:
> > config->play_warning = 0;
> > ast_clear_flag(&(config->features_caller),
> > AST_FEATURE_PLAY_WARNING);
> > ast_clear_flag(&(config->features_callee),
> > AST_FEATURE_PLAY_WARNING);
> > config->warning_freq = 0;
> > config->warning_sound = NULL;
> > config->end_sound = NULL;
> > config->start_sound = NULL;
> > config->firstpass = 0;
> > can be safely removed if in channel.c caller_warning and
> > callee_warning
> > (lines 4081 & 4082) are moved inside the "} else if
> > (config->timelimit) {"
> > block, because in case of feature the "if (config->feature_timer) {"
> > block
> > will match and no warnings will be played.
> >
> > more problematic is the feature_timer itself as there is some
> > simultaneous
> > use of it from the backup config, so maybe another config variable
> > old_feature_timer will be needed (not sure what exactly happens here
> > and is it
> > possible to use a local variable)
> >
>
> We can certainly clean the code up in trunk, just not in any release
branches. If you post a patch on Mantis I'm sure Jeff and others
> will give it a look.
>
OK, i will. Just wasn't sure for which branch ... trunk then :)
> > > I also thought about playing the warnings not in the bridge. Changes
> > such as
> > these are more appropriate for trunk though.
> > >
> > > I assume you've been keeping up with the new review here:
> > > http://reviewboard.digium.com/r/93/
> > >
> >
> > yes, waiting for it to be committed, but it still lacks the interval
> > hooks and
>
> These will actually go in for phase 2 of bridging which will provide the
remaining options used by two channel bridges primarily.
>
> > the most demanding part for the 'out of bridge warnings' is the
> > 'wishper file'
> > or similar from the audiohooks
> >
>
> I think given the APIs we currently have it is possible to accomplish this.
You just have to build something using them. There are two
> ways that come to mind to use audiohooks to accomplish it.
>
> 1. Open the file you want to stream, attach a manipulate audiohook, for each
callback you get simply replace the frame with a new frame that has the
> number of samples required from the open stream.
I was thinking about the same, but there is no hook's private data in the
structure ... i guess i will need to learn how to use datastores and the
volume audiohook seems a good example ... will go this way. Thank you for the
pointers.
>
> 2. Attach a whisper audiohook and have a separate thread that is timed to
read audio from the file and write it into the audiohook.
This will need a separate thread for each call.
>
> --
> 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
>
> _______________________________________________
> --Bandwidth and Colocation Provided by http://www.api-digital.com--
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-dev
More information about the asterisk-dev
mailing list