[Asterisk-cvs] asterisk app.c, 1.72, 1.73 channel.c, 1.234,
1.235 file.c, 1.73, 1.74 rtp.c, 1.142, 1.143
markster
markster
Mon Aug 29 22:10:51 CDT 2005
Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv15557
Modified Files:
app.c channel.c file.c rtp.c
Log Message:
Add SIP video fixes
Index: app.c
===================================================================
RCS file: /usr/cvsroot/asterisk/app.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -d -r1.72 -r1.73
--- app.c 22 Aug 2005 19:06:42 -0000 1.72
+++ app.c 30 Aug 2005 02:12:09 -0000 1.73
@@ -615,6 +615,8 @@
return -1;
}
}
+ /* Request a video update */
+ ast_indicate(chan, AST_CONTROL_VIDUPDATE);
if (x == fmtcnt) {
/* Loop forever, writing the packets we read to the writer(s), until
Index: channel.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channel.c,v
retrieving revision 1.234
retrieving revision 1.235
diff -u -d -r1.234 -r1.235
--- channel.c 29 Aug 2005 23:11:29 -0000 1.234
+++ channel.c 30 Aug 2005 02:12:09 -0000 1.235
@@ -1721,6 +1721,8 @@
/* Do nothing.... */
} else if (condition == AST_CONTROL_UNHOLD) {
/* Do nothing.... */
+ } else if (condition == AST_CONTROL_VIDUPDATE) {
+ /* Do nothing.... */
} else {
/* not handled */
ast_log(LOG_WARNING, "Unable to handle indication %d for '%s'\n", condition, chan->name);
@@ -2966,7 +2968,8 @@
}
if ((f->frametype == AST_FRAME_CONTROL) && !(config->flags & AST_BRIDGE_IGNORE_SIGS)) {
- if ((f->subclass == AST_CONTROL_HOLD) || (f->subclass == AST_CONTROL_UNHOLD)) {
+ if ((f->subclass == AST_CONTROL_HOLD) || (f->subclass == AST_CONTROL_UNHOLD) ||
+ (f->subclass == AST_CONTROL_VIDUPDATE)) {
ast_indicate(who == c0 ? c1 : c0, f->subclass);
} else {
*fo = f;
Index: file.c
===================================================================
RCS file: /usr/cvsroot/asterisk/file.c,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -d -r1.73 -r1.74
--- file.c 23 Aug 2005 15:43:47 -0000 1.73
+++ file.c 30 Aug 2005 02:12:09 -0000 1.74
@@ -987,6 +987,7 @@
return -1;
case AST_CONTROL_RINGING:
case AST_CONTROL_ANSWER:
+ case AST_CONTROL_VIDUPDATE:
/* Unimportant */
break;
default:
Index: rtp.c
===================================================================
RCS file: /usr/cvsroot/asterisk/rtp.c,v
retrieving revision 1.142
retrieving revision 1.143
diff -u -d -r1.142 -r1.143
--- rtp.c 12 Aug 2005 18:59:43 -0000 1.142
+++ rtp.c 30 Aug 2005 02:12:09 -0000 1.143
@@ -672,7 +672,7 @@
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 @@
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) ||
More information about the svn-commits
mailing list