aboutsummaryrefslogtreecommitdiffstats
path: root/rtp.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-08-30 02:12:09 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-08-30 02:12:09 +0000
commitcd0067f95a3d30b8c59cf745e051810295fc96db (patch)
tree523cf56292aca0be31b6cbce502ff6608eab29a2 /rtp.c
parent1369e0caffc94ce9dc3be97252868373c6b6a91b (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-xrtp.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/rtp.c b/rtp.c
index 71a24360f..e71b2e022 100755
--- a/rtp.c
+++ b/rtp.c
@@ -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) ||