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