[asterisk-commits] murf: trunk r48663 - in /trunk: ./ channels/
configs/ include/ main/
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Wed Dec 20 17:24:09 MST 2006
Author: murf
Date: Wed Dec 20 18:24:08 2006
New Revision: 48663
URL: http://svn.digium.com/view/asterisk?view=rev&rev=48663
Log:
As per bug 7978, this version introduces the jittertargetextra option in config files
Modified:
trunk/CHANGES
trunk/channels/chan_iax2.c
trunk/configs/iax.conf.sample
trunk/include/jitterbuf.h
trunk/main/jitterbuf.c
Modified: trunk/CHANGES
URL: http://svn.digium.com/view/asterisk/trunk/CHANGES?view=diff&rev=48663&r1=48662&r2=48663
==============================================================================
--- trunk/CHANGES (original)
+++ trunk/CHANGES Wed Dec 20 18:24:08 2006
@@ -63,3 +63,5 @@
does not count paused queue members as unavailable.
* Added maxfiles option to options section of asterisk.conf which allows you to specify
what Asterisk should set as the maximum number of open files when it loads.
+ * Added the jittertargetextra configuration option.
+
Modified: trunk/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_iax2.c?view=diff&rev=48663&r1=48662&r2=48663
==============================================================================
--- trunk/channels/chan_iax2.c (original)
+++ trunk/channels/chan_iax2.c Wed Dec 20 18:24:08 2006
@@ -163,6 +163,7 @@
static int maxjitterbuffer=1000;
static int resyncthreshold=1000;
static int maxjitterinterps=10;
+static int jittertargetextra = 40; /* number of milliseconds the new jitter buffer adds on to its size */
static int trunkfreq = 20;
static int authdebug = 1;
static int autokill = 0;
@@ -1125,6 +1126,7 @@
jbconf.max_jitterbuf = maxjitterbuffer;
jbconf.resync_threshold = resyncthreshold;
jbconf.max_contig_interp = maxjitterinterps;
+ jbconf.target_extra = jittertargetextra;
jb_setconf(tmp->jb,&jbconf);
AST_LIST_HEAD_INIT_NOLOCK(&tmp->dpentries);
@@ -8958,6 +8960,8 @@
resyncthreshold = atoi(v->value);
else if (!strcasecmp(v->name, "maxjitterinterps"))
maxjitterinterps = atoi(v->value);
+ else if (!strcasecmp(v->name, "jittertargetextra"))
+ jittertargetextra = atoi(v->value);
else if (!strcasecmp(v->name, "lagrqtime"))
lagrq_time = atoi(v->value);
else if (!strcasecmp(v->name, "maxregexpire"))
Modified: trunk/configs/iax.conf.sample
URL: http://svn.digium.com/view/asterisk/trunk/configs/iax.conf.sample?view=diff&rev=48663&r1=48662&r2=48663
==============================================================================
--- trunk/configs/iax.conf.sample (original)
+++ trunk/configs/iax.conf.sample Wed Dec 20 18:24:08 2006
@@ -129,6 +129,13 @@
; returning this many interpolations. This prevents interpolating throughout
; a long silence.
;
+;
+; jittertargetextra: number of milliseconds by which the new jitter buffer
+; will pad its size. the default is 40, so without modification, the new
+; jitter buffer will set its size to the jitter value plus 40 milliseconds.
+; increasing this value may help if your network normally has low jitter,
+; but occasionally has spikes.
+;
jitterbuffer=no
forcejitterbuffer=no
@@ -139,6 +146,7 @@
;maxexcessbuffer=80
;minexcessbuffer=10
;jittershrinkrate=1
+;jittertargetextra=40
;trunkfreq=20 ; How frequently to send trunk msgs (in ms)
Modified: trunk/include/jitterbuf.h
URL: http://svn.digium.com/view/asterisk/trunk/include/jitterbuf.h?view=diff&rev=48663&r1=48662&r2=48663
==============================================================================
--- trunk/include/jitterbuf.h (original)
+++ trunk/include/jitterbuf.h Wed Dec 20 18:24:08 2006
@@ -58,6 +58,7 @@
long max_jitterbuf; /* defines a hard clamp to use in setting the jitter buffer delay */
long resync_threshold; /* the jb will resync when delay increases to (2 * jitter) + this param */
long max_contig_interp; /* the max interp frames to return in a row */
+ long target_extra ; /* amount of additional jitterbuffer adjustment, overrides JB_TARGET_EXTRA */
} jb_conf;
typedef struct jb_info {
Modified: trunk/main/jitterbuf.c
URL: http://svn.digium.com/view/asterisk/trunk/main/jitterbuf.c?view=diff&rev=48663&r1=48662&r2=48663
==============================================================================
--- trunk/main/jitterbuf.c (original)
+++ trunk/main/jitterbuf.c Wed Dec 20 18:24:08 2006
@@ -79,8 +79,8 @@
memset(jb, 0, sizeof(*jb));
jb->info.conf = s;
- /* initialize length */
- jb->info.current = jb->info.target = JB_TARGET_EXTRA;
+ /* initialize length, using the default value */
+ jb->info.current = jb->info.target = jb->info.conf.target_extra = JB_TARGET_EXTRA;
jb->info.silence_begin_ts = -1;
}
@@ -547,7 +547,7 @@
dbg_cnt++;
/* target */
- jb->info.target = jb->info.jitter + jb->info.min + JB_TARGET_EXTRA;
+ jb->info.target = jb->info.jitter + jb->info.min + jb->info.conf.target_extra;
/* if a hard clamp was requested, use it */
if ((jb->info.conf.max_jitterbuf) && ((jb->info.target - jb->info.min) > jb->info.conf.max_jitterbuf)) {
@@ -633,7 +633,7 @@
/* unless we don't have a frame, then shrink 1 frame */
/* every 80ms (though perhaps we can shrink even faster */
/* in this case) */
- if (diff < -JB_TARGET_EXTRA &&
+ if (diff < -jb->info.conf.target_extra &&
((!frame && jb->info.last_adjustment + 80 < now) ||
(jb->info.last_adjustment + 500 < now))) {
@@ -711,7 +711,7 @@
/* jb->info.silence_begin_ts = 0; */
/* shrink interpl len every 10ms during silence */
- if (diff < -JB_TARGET_EXTRA &&
+ if (diff < -jb->info.conf.target_extra &&
jb->info.last_adjustment + 10 <= now) {
jb->info.current -= interpl;
jb->info.last_adjustment = now;
@@ -760,7 +760,7 @@
if (next > 0) {
history_get(jb);
/* shrink during silence */
- if (jb->info.target - jb->info.current < -JB_TARGET_EXTRA)
+ if (jb->info.target - jb->info.current < -jb->info.conf.target_extra)
return jb->info.last_adjustment + 10;
return next + jb->info.target;
}
@@ -819,6 +819,16 @@
jb->info.conf.resync_threshold = conf->resync_threshold;
jb->info.conf.max_contig_interp = conf->max_contig_interp;
+ /* -1 indicates use of the default JB_TARGET_EXTRA value */
+ jb->info.conf.target_extra = ( conf->target_extra == -1 )
+ ? JB_TARGET_EXTRA
+ : conf->target_extra
+ ;
+
+ /* update these to match new target_extra setting */
+ jb->info.current = jb->info.conf.target_extra;
+ jb->info.target = jb->info.conf.target_extra;
+
return JB_OK;
}
More information about the asterisk-commits
mailing list