diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-08-30 02:12:09 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-08-30 02:12:09 +0000 |
commit | cd0067f95a3d30b8c59cf745e051810295fc96db (patch) | |
tree | 523cf56292aca0be31b6cbce502ff6608eab29a2 /rtp.c | |
parent | 1369e0caffc94ce9dc3be97252868373c6b6a91b (diff) |
Add SIP video fixes
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6448 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'rtp.c')
-rwxr-xr-x | rtp.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -672,7 +672,7 @@ void ast_rtp_pt_default(struct ast_rtp* rtp) rtp->rtp_lookup_code_cache_result = 0; } -/* Make a note of a RTP payload type that was seen in a SDP "m=" line. */ +/* Make a note of a RTP paymoad type that was seen in a SDP "m=" line. */ /* By default, use the well-known value for this type (although it may */ /* still be set to a different value by a subsequent "a=rtpmap:" line): */ void ast_rtp_set_m_type(struct ast_rtp* rtp, int pt) { @@ -1628,6 +1628,17 @@ enum ast_bridge_result ast_rtp_bridge(struct ast_channel *c0, struct ast_channel ast_log(LOG_WARNING, "Channel '%s' failed to break RTP bridge\n", c1->name); } return AST_BRIDGE_COMPLETE; + } else if ((f->frametype == AST_FRAME_CONTROL) && !(flags & AST_BRIDGE_IGNORE_SIGS)) { + if ((f->subclass == AST_CONTROL_HOLD) || (f->subclass == AST_CONTROL_UNHOLD) || + (f->subclass == AST_CONTROL_VIDUPDATE)) { + ast_indicate(who == c0 ? c1 : c0, f->subclass); + ast_frfree(f); + } else { + *fo = f; + *rc = who; + ast_log(LOG_DEBUG, "Got a FRAME_CONTROL (%d) frame on channel %s\n", f->subclass, who->name); + return AST_BRIDGE_COMPLETE; + } } else { if ((f->frametype == AST_FRAME_DTMF) || (f->frametype == AST_FRAME_VOICE) || |