diff options
author | Richard Mudgett <rmudgett@digium.com> | 2013-06-21 22:39:27 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2013-06-21 22:39:27 +0000 |
commit | 1267c91315f6850483022b4535beadbc0069b22e (patch) | |
tree | 17236bfa946838220112a3d80fb86913f0b70aa8 /main | |
parent | c14cdede125902fb5c59c92745ae10d6c1e57d33 (diff) |
Extract a useful routine from the softmix bridge technology.
* Extract a useful routine from the softmix bridge technology for other
technologies. Make other technologies use it if they can.
* Made native and 1-1 bridges write to all parties if the bridge channel
writing the frame into the bridge is NULL. Softmix will also do the same
for frame types that make sense.
* Tweak the bridge write routine return value meaning and adjust the
bridge technologies to match.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@392514 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r-- | main/bridging.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/main/bridging.c b/main/bridging.c index 98a72f379..0530424ff 100644 --- a/main/bridging.c +++ b/main/bridging.c @@ -421,6 +421,22 @@ int ast_bridge_channel_queue_control_data(struct ast_bridge_channel *bridge_chan return ast_bridge_channel_queue_frame(bridge_channel, &frame); } +int ast_bridge_queue_everyone_else(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, struct ast_frame *frame) +{ + struct ast_bridge_channel *cur; + int not_written = -1; + + AST_LIST_TRAVERSE(&bridge->channels, cur, entry) { + if (cur == bridge_channel) { + continue; + } + if (!ast_bridge_channel_queue_frame(cur, frame)) { + not_written = 0; + } + } + return not_written; +} + void ast_bridge_channel_restore_formats(struct ast_bridge_channel *bridge_channel) { /* Restore original formats of the channel as they came in */ |