[asterisk-dev] [Code Review]: Support 'deaf' participants in ConfBridge
David Vossel
reviewboard at asterisk.org
Fri Dec 30 11:58:12 CST 2011
> On Dec. 29, 2011, 10:51 a.m., David Vossel wrote:
> > /trunk/bridges/bridge_softmix.c, lines 852-870
> > <https://reviewboard.asterisk.org/r/1645/diff/1/?file=22467#file22467line852>
> >
> > This will work, but it breaks the layers of abstraction set up between app_confbridge bridging.c and bridge_softmix.
> >
> > Until now, the bridging technology layer (in this case bridge_softmix) did not need to know anything about the bridge's features. All it was responsible for was the bridge's tech_args structure. By forcing all the features to live at the bridging.c layer, we can be sure all those features are handled in a way that is generic to all bridging technologies. This is very important as it allows us to completely exchange bridging_softmix.c with another bridging technology in the future without having to re-implement any of the user features in the bridging API.
> >
> > This layer can be preserved by defining a function that is a wrapper for the ast_write() function in bridging.c which can intercept the frame before it is written to the channel and replace it with the NULL frame when deaf mode is in use. bridge_softmix will then use that function to write frames to a channel instead of ast_write directly.
>
> fabled wrote:
> Yes, I figured this was the intention. For bridge_softmix, it would still make sense to detect it explicitly, as we can avoid the per-participant mixing (removal of own voice), and transcoding (if participant using codec of it's own).
>
> Additionally, it appears that sending NULL frames will inhibit outbound RTP packets. Is there a way to force sending of silence RTP frames, or should those be sent explicitly? Or is it acceptable inhibit them?
>
> Will fix the two other typos.
Ah yes, the rtp thing is an issue. Something like this might work.
--------------------
/* Make SLINEAR write frame from local buffer */
if (sc->write_frame.subclass.format.id != cur_slin_id) {
ast_format_set(&sc->write_frame.subclass.format, cur_slin_id, 0);
}
sc->write_frame.datalen = softmix_datalen;
sc->write_frame.samples = softmix_samples;
if (deaf) {
memset(sc->final_buf, 0, softmix_datalen);
} else {
memcpy(sc->final_buf, buf, softmix_datalen);
/* process the softmix channel's new write audio */
softmix_process_write_audio(&trans_helper, &bridge_channel->chan->rawwriteformat, sc);
}
/* The frame is now ready for use... */
sc->have_frame = 1;
ast_mutex_unlock(&sc->lock);
/* Poke bridged channel thread just in case */
pthread_kill(bridge_channel->thread, SIGURG);
----------------------
I still don't like the idea of having this at the mixing technology layer. I understand it is more efficient to do it this way. I don't really have a good solution for this. I suppose it is possible we could create a generic way of doing deaf mode and allow the bridge technology to override the generic way for a technology specific way.
- David
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1645/#review5083
-----------------------------------------------------------
On Dec. 30, 2011, 8:44 a.m., fabled wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1645/
> -----------------------------------------------------------
>
> (Updated Dec. 30, 2011, 8:44 a.m.)
>
>
> Review request for Asterisk Developers.
>
>
> Summary
> -------
>
> Support 'deaf' participants in ConfBridge
>
>
> This addresses bug ASTERISK-19109.
> https://issues.asterisk.org/jira/browse/ASTERISK-19109
>
>
> Diffs
> -----
>
> /trunk/apps/app_confbridge.c 349196
> /trunk/apps/confbridge/conf_config_parser.c 349196
> /trunk/apps/confbridge/include/confbridge.h 349196
> /trunk/bridges/bridge_softmix.c 349196
> /trunk/include/asterisk/bridging_features.h 349196
>
> Diff: https://reviewboard.asterisk.org/r/1645/diff
>
>
> Testing
> -------
>
>
> Thanks,
>
> fabled
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20111230/e71fd0c4/attachment.htm>
More information about the asterisk-dev
mailing list