Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv8749/channels

Modified Files:
        chan_iax2.c 
Log Message:
More jitter buffer fixes for large resync (bug #4311)


Index: chan_iax2.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_iax2.c,v
retrieving revision 1.291
retrieving revision 1.292
diff -u -d -r1.291 -r1.292
--- chan_iax2.c 19 May 2005 00:01:11 -0000      1.291
+++ chan_iax2.c 19 May 2005 00:34:28 -0000      1.292
@@ -129,6 +129,9 @@
 static int maxtrunkcall = TRUNK_CALL_START;
 static int maxnontrunkcall = 1;
 static int maxjitterbuffer=1000;
+#ifdef NEWJB
+static int resyncthreshold=1000;
+#endif
 static int jittershrinkrate=2;
 static int trunkfreq = 20;
 static int send_trunktimestamps = 1;
@@ -859,6 +862,7 @@
                        tmp->jb = jb_new();
                        tmp->jbid = -1;
                        jbinfo.max_jitterbuf = maxjitterbuffer;
+                       jbinfo.resync_threshold = resyncthreshold;
                        jb_setinfo(tmp->jb,&jbinfo);
                }
 #endif
@@ -2216,10 +2220,10 @@
  * make preprocessor swiss-cheese out of this one.  I'm not sure which is less 
revolting.. */
 static int schedule_delivery(struct iax_frame *fr, int reallydeliver, int 
updatehistory, int fromtrunk)
 {
-       int x;
 #ifdef NEWJB
        int type, len;
 #else
+       int x;
        int ms;
        int delay;
        unsigned int orig_ts;
@@ -2242,6 +2246,7 @@
        unwrap_timestamp(fr);
 
        if (updatehistory) {
+#ifndef NEWJB
 
                /* Attempt to spot a change of timebase on timestamps coming 
from the other side
                   We detect by noticing a jump in consecutive timestamps that 
can't reasonably be explained
@@ -2263,7 +2268,6 @@
                                iaxs[fr->callno]->last = 0;
                        /* should we also empty history? */
                }
-#ifndef NEWJB
                /* ms is a measure of the "lateness" of the frame relative to 
the "reference"
                   frame we received.  (initially the very first, but also see 
code just above here).
                   Understand that "ms" can easily be -ve if lag improves since 
the reference frame.
@@ -2386,8 +2390,9 @@
        if(jb_put(iaxs[fr->callno]->jb, fr, type, len, fr->ts,
             calc_rxstamp(iaxs[fr->callno],fr->ts)) == JB_DROP) {
                iax2_frame_free(fr);
+       } else {
+               update_jbsched(iaxs[fr->callno]);
        }
-       update_jbsched(iaxs[fr->callno]);
 #else
        /* Just for reference, keep the "jitter" value, the difference between 
the
           earliest and the latest. */
@@ -8411,6 +8416,10 @@
                }
                else if (!strcasecmp(v->name, "maxjitterbuffer")) 
                        maxjitterbuffer = atoi(v->value);
+#ifdef NEWJB
+               else if (!strcasecmp(v->name, "resyncthreshold")) 
+                       resyncthreshold = atoi(v->value);
+#endif
                else if (!strcasecmp(v->name, "jittershrinkrate")) 
                        jittershrinkrate = atoi(v->value);
                else if (!strcasecmp(v->name, "maxexcessbuffer")) 

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

Reply via email to