mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 12:36:58 +00:00
Video will never reach Packet2Packet bridging and can do more harm then good.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47944 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
24
main/rtp.c
24
main/rtp.c
@@ -2884,7 +2884,7 @@ static int p2p_callback_disable(struct ast_channel *chan, struct ast_rtp *rtp, i
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Bridge loop for partial native bridge (packet2packet) */
|
/*! \brief Bridge loop for partial native bridge (packet2packet) */
|
||||||
static enum ast_bridge_result bridge_p2p_loop(struct ast_channel *c0, struct ast_channel *c1, struct ast_rtp *p0, struct ast_rtp *p1, struct ast_rtp *vp0, struct ast_rtp *vp1, int timeoutms, int flags, struct ast_frame **fo, struct ast_channel **rc, void *pvt0, void *pvt1)
|
static enum ast_bridge_result bridge_p2p_loop(struct ast_channel *c0, struct ast_channel *c1, struct ast_rtp *p0, struct ast_rtp *p1, int timeoutms, int flags, struct ast_frame **fo, struct ast_channel **rc, void *pvt0, void *pvt1)
|
||||||
{
|
{
|
||||||
struct ast_frame *fr = NULL;
|
struct ast_frame *fr = NULL;
|
||||||
struct ast_channel *who = NULL, *other = NULL, *cs[3] = {NULL, };
|
struct ast_channel *who = NULL, *other = NULL, *cs[3] = {NULL, };
|
||||||
@@ -2898,12 +2898,6 @@ static enum ast_bridge_result bridge_p2p_loop(struct ast_channel *c0, struct ast
|
|||||||
p0->bridged = p1;
|
p0->bridged = p1;
|
||||||
ast_clear_flag(p1, FLAG_P2P_SENT_MARK);
|
ast_clear_flag(p1, FLAG_P2P_SENT_MARK);
|
||||||
p1->bridged = p0;
|
p1->bridged = p0;
|
||||||
if (vp0) {
|
|
||||||
ast_clear_flag(vp0, FLAG_P2P_SENT_MARK);
|
|
||||||
vp0->bridged = vp1;
|
|
||||||
ast_clear_flag(vp1, FLAG_P2P_SENT_MARK);
|
|
||||||
vp1->bridged = vp0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Activate callback modes if possible */
|
/* Activate callback modes if possible */
|
||||||
p0_callback = p2p_callback_enable(c0, p0, &p0_fds[0], &p0_iod[0]);
|
p0_callback = p2p_callback_enable(c0, p0, &p0_fds[0], &p0_iod[0]);
|
||||||
@@ -2964,22 +2958,12 @@ static enum ast_bridge_result bridge_p2p_loop(struct ast_channel *c0, struct ast
|
|||||||
p1_callback = p2p_callback_disable(c1, p1, &p1_fds[0], &p1_iod[0]);
|
p1_callback = p2p_callback_disable(c1, p1, &p1_fds[0], &p1_iod[0]);
|
||||||
p0->bridged = NULL;
|
p0->bridged = NULL;
|
||||||
p1->bridged = NULL;
|
p1->bridged = NULL;
|
||||||
if (vp0) {
|
|
||||||
vp0->bridged = NULL;
|
|
||||||
vp1->bridged = NULL;
|
|
||||||
}
|
|
||||||
} else if (fr->subclass == AST_CONTROL_UNHOLD) {
|
} else if (fr->subclass == AST_CONTROL_UNHOLD) {
|
||||||
/* If we are off hold, then go back to callback mode and P2P bridging */
|
/* If we are off hold, then go back to callback mode and P2P bridging */
|
||||||
ast_clear_flag(p0, FLAG_P2P_SENT_MARK);
|
ast_clear_flag(p0, FLAG_P2P_SENT_MARK);
|
||||||
p0->bridged = p1;
|
p0->bridged = p1;
|
||||||
ast_clear_flag(p1, FLAG_P2P_SENT_MARK);
|
ast_clear_flag(p1, FLAG_P2P_SENT_MARK);
|
||||||
p1->bridged = p0;
|
p1->bridged = p0;
|
||||||
if (vp0) {
|
|
||||||
ast_clear_flag(vp0, FLAG_P2P_SENT_MARK);
|
|
||||||
vp0->bridged = vp1;
|
|
||||||
ast_clear_flag(vp1, FLAG_P2P_SENT_MARK);
|
|
||||||
vp1->bridged = vp0;
|
|
||||||
}
|
|
||||||
p0_callback = p2p_callback_enable(c0, p0, &p0_fds[0], &p0_iod[0]);
|
p0_callback = p2p_callback_enable(c0, p0, &p0_fds[0], &p0_iod[0]);
|
||||||
p1_callback = p2p_callback_enable(c1, p1, &p1_fds[0], &p1_iod[0]);
|
p1_callback = p2p_callback_enable(c1, p1, &p1_fds[0], &p1_iod[0]);
|
||||||
}
|
}
|
||||||
@@ -3016,10 +3000,6 @@ static enum ast_bridge_result bridge_p2p_loop(struct ast_channel *c0, struct ast
|
|||||||
/* Break out of the direct bridge */
|
/* Break out of the direct bridge */
|
||||||
p0->bridged = NULL;
|
p0->bridged = NULL;
|
||||||
p1->bridged = NULL;
|
p1->bridged = NULL;
|
||||||
if (vp0) {
|
|
||||||
vp0->bridged = NULL;
|
|
||||||
vp1->bridged = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -3119,7 +3099,7 @@ enum ast_bridge_result ast_rtp_bridge(struct ast_channel *c0, struct ast_channel
|
|||||||
}
|
}
|
||||||
if (option_verbose > 2)
|
if (option_verbose > 2)
|
||||||
ast_verbose(VERBOSE_PREFIX_3 "Packet2Packet bridging %s and %s\n", c0->name, c1->name);
|
ast_verbose(VERBOSE_PREFIX_3 "Packet2Packet bridging %s and %s\n", c0->name, c1->name);
|
||||||
res = bridge_p2p_loop(c0, c1, p0, p1, vp0, vp1, timeoutms, flags, fo, rc, pvt0, pvt1);
|
res = bridge_p2p_loop(c0, c1, p0, p1, timeoutms, flags, fo, rc, pvt0, pvt1);
|
||||||
} else {
|
} else {
|
||||||
if (option_verbose > 2)
|
if (option_verbose > 2)
|
||||||
ast_verbose(VERBOSE_PREFIX_3 "Native bridging %s and %s\n", c0->name, c1->name);
|
ast_verbose(VERBOSE_PREFIX_3 "Native bridging %s and %s\n", c0->name, c1->name);
|
||||||
|
Reference in New Issue
Block a user