[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