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) || 

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to