aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-03-02 19:12:26 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-03-02 19:12:26 +0000
commitc81e44cf23738e9c325da6c5df19537747bf296b (patch)
tree3c62c67986d60a852009d664c290204b6f83c391
parentb6399a2c6032038eaf5afb2af4bc57d24917741c (diff)
Merged revisions 249893 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r249893 | dvossel | 2010-03-02 13:08:38 -0600 (Tue, 02 Mar 2010) | 11 lines fixes adaptive jitterbuffer configuration When configuring the adaptive jitterbuffer, the target_extra value not only could not be set from the configuration, but was not even being set to its proper default. This value is required in order for the adaptive jitterbuffer to work correctly. To resolve this a config option has been added to expose this value to the conf files, and a default value is provided when no config specific value is present. ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@249895 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_alsa.c3
-rw-r--r--channels/chan_console.c3
-rw-r--r--channels/chan_dahdi.c3
-rw-r--r--channels/chan_gtalk.c3
-rw-r--r--channels/chan_h323.c3
-rw-r--r--channels/chan_jingle.c3
-rw-r--r--channels/chan_local.c1
-rw-r--r--channels/chan_mgcp.c3
-rw-r--r--channels/chan_oss.c1
-rw-r--r--channels/chan_sip.c3
-rw-r--r--channels/chan_skinny.c3
-rw-r--r--channels/chan_unistim.c5
-rw-r--r--channels/chan_usbradio.c1
-rw-r--r--channels/misdn_config.c1
-rw-r--r--configs/alsa.conf.sample7
-rw-r--r--configs/chan_dahdi.conf.sample7
-rw-r--r--configs/console.conf.sample7
-rw-r--r--configs/mgcp.conf.sample7
-rw-r--r--configs/misdn.conf.sample7
-rw-r--r--configs/oss.conf.sample7
-rw-r--r--configs/sip.conf.sample7
-rw-r--r--configs/usbradio.conf.sample7
-rw-r--r--include/asterisk/abstract_jb.h7
-rw-r--r--main/abstract_jb.c5
24 files changed, 91 insertions, 13 deletions
diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c
index 0765308c9..75f63aecb 100644
--- a/channels/chan_alsa.c
+++ b/channels/chan_alsa.c
@@ -62,7 +62,8 @@ static struct ast_jb_conf default_jbconf = {
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_console.c b/channels/chan_console.c
index fccb1e745..933cca356 100644
--- a/channels/chan_console.c
+++ b/channels/chan_console.c
@@ -177,7 +177,8 @@ static struct ast_jb_conf default_jbconf = {
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 1d4c55a88..309876f72 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -175,7 +175,8 @@ static struct ast_jb_conf default_jbconf =
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_gtalk.c b/channels/chan_gtalk.c
index d608cc05c..b5bc0ec84 100644
--- a/channels/chan_gtalk.c
+++ b/channels/chan_gtalk.c
@@ -78,7 +78,8 @@ static struct ast_jb_conf default_jbconf =
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_h323.c b/channels/chan_h323.c
index 2346175de..be8c78d90 100644
--- a/channels/chan_h323.c
+++ b/channels/chan_h323.c
@@ -118,7 +118,8 @@ static struct ast_jb_conf default_jbconf =
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_jingle.c b/channels/chan_jingle.c
index d239fd717..717f702b8 100644
--- a/channels/chan_jingle.c
+++ b/channels/chan_jingle.c
@@ -77,7 +77,8 @@ static struct ast_jb_conf default_jbconf =
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_local.c b/channels/chan_local.c
index 37869a8a7..7ccdc8a5a 100644
--- a/channels/chan_local.c
+++ b/channels/chan_local.c
@@ -59,6 +59,7 @@ static struct ast_jb_conf g_jb_conf = {
.max_size = -1,
.resync_threshold = -1,
.impl = "",
+ .target_extra = -1,
};
static struct ast_channel *local_request(const char *type, int format, void *data, int *cause);
diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index 863aee911..771286da7 100644
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -92,7 +92,8 @@ static struct ast_jb_conf default_jbconf =
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_oss.c b/channels/chan_oss.c
index 5fa0a50a1..cf29b60a0 100644
--- a/channels/chan_oss.c
+++ b/channels/chan_oss.c
@@ -72,6 +72,7 @@ static struct ast_jb_conf default_jbconf =
.max_size = -1,
.resync_threshold = -1,
.impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 3b343850a..2f916c610 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -558,7 +558,8 @@ static struct ast_jb_conf default_jbconf =
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf; /*!< Global jitterbuffer configuration */
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 84bcd4d75..4753e08e8 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -163,7 +163,8 @@ static struct ast_jb_conf default_jbconf =
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c
index 36805694e..ed31a7b3a 100644
--- a/channels/chan_unistim.c
+++ b/channels/chan_unistim.c
@@ -188,10 +188,11 @@ static void dummy(char *unused, ...)
/*! \brief Global jitterbuffer configuration - by default, jb is disabled */
static struct ast_jb_conf default_jbconf =
{
- .flags = 0,
+ .flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/chan_usbradio.c b/channels/chan_usbradio.c
index f7b2066ce..7ae9159c3 100644
--- a/channels/chan_usbradio.c
+++ b/channels/chan_usbradio.c
@@ -193,6 +193,7 @@ static struct ast_jb_conf default_jbconf =
.max_size = -1,
.resync_threshold = -1,
.impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/channels/misdn_config.c b/channels/misdn_config.c
index 4a90bbec1..2a330551f 100644
--- a/channels/misdn_config.c
+++ b/channels/misdn_config.c
@@ -54,6 +54,7 @@ static struct ast_jb_conf default_jbconf =
.max_size = -1,
.resync_threshold = -1,
.impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
diff --git a/configs/alsa.conf.sample b/configs/alsa.conf.sample
index f55030618..fa2ff1d9b 100644
--- a/configs/alsa.conf.sample
+++ b/configs/alsa.conf.sample
@@ -57,6 +57,13 @@ extension=s
; (with size always equals to jbmax-size) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
+; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
+ ; The option represents the 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.
+
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
diff --git a/configs/chan_dahdi.conf.sample b/configs/chan_dahdi.conf.sample
index 9b958c087..f40af59a2 100644
--- a/configs/chan_dahdi.conf.sample
+++ b/configs/chan_dahdi.conf.sample
@@ -812,6 +812,13 @@ pickupgroup=1
; (with size always equals to jbmax-size) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
+; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
+ ; The option represents the 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.
+
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
;
diff --git a/configs/console.conf.sample b/configs/console.conf.sample
index ff58605a3..7a40ed02e 100644
--- a/configs/console.conf.sample
+++ b/configs/console.conf.sample
@@ -64,6 +64,13 @@
; (with size always equals to jbmax-size) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
+; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
+ ; The option represents the 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.
+
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
diff --git a/configs/mgcp.conf.sample b/configs/mgcp.conf.sample
index c20b34a7c..5d42ac17c 100644
--- a/configs/mgcp.conf.sample
+++ b/configs/mgcp.conf.sample
@@ -35,6 +35,13 @@
; (with size always equals to jbmax-size) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
+; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
+ ; The option represents the 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.
+
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
diff --git a/configs/misdn.conf.sample b/configs/misdn.conf.sample
index ca7f45497..5cadfb0de 100644
--- a/configs/misdn.conf.sample
+++ b/configs/misdn.conf.sample
@@ -158,6 +158,13 @@ crypt_keys=test,muh
; (with size always equals to jbmaxsize) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
+; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
+ ; The option represents the 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.
+
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
diff --git a/configs/oss.conf.sample b/configs/oss.conf.sample
index 48f0ced90..3b9f5de0a 100644
--- a/configs/oss.conf.sample
+++ b/configs/oss.conf.sample
@@ -66,6 +66,13 @@
; (with size always equals to jbmax-size) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
+ ; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
+ ; The option represents the 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.
+
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
diff --git a/configs/sip.conf.sample b/configs/sip.conf.sample
index 5cc3d8398..e4e62ecb7 100644
--- a/configs/sip.conf.sample
+++ b/configs/sip.conf.sample
@@ -799,6 +799,13 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; (with size always equals to jbmaxsize) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
+; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
+ ; The option represents the 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.
+
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
diff --git a/configs/usbradio.conf.sample b/configs/usbradio.conf.sample
index 5ba9815ca..6af373e6d 100644
--- a/configs/usbradio.conf.sample
+++ b/configs/usbradio.conf.sample
@@ -48,6 +48,13 @@
; (with size always equals to jbmax-size) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
+; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
+ ; The option represents the 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.
+
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
diff --git a/include/asterisk/abstract_jb.h b/include/asterisk/abstract_jb.h
index 2a1b89fd1..a1f3cdd9d 100644
--- a/include/asterisk/abstract_jb.h
+++ b/include/asterisk/abstract_jb.h
@@ -57,9 +57,11 @@ struct ast_jb_conf
/*! \brief Max size of the jitterbuffer implementation. */
long max_size;
/*! \brief Resynchronization threshold of the jitterbuffer implementation. */
- long resync_threshold;
+ long resync_threshold;
/*! \brief Name of the jitterbuffer implementation to be used. */
- char impl[AST_JB_IMPL_NAME_SIZE];
+ char impl[AST_JB_IMPL_NAME_SIZE];
+ /*! \brief amount of additional jitterbuffer adjustment */
+ long target_extra;
};
@@ -69,6 +71,7 @@ struct ast_jb_conf
#define AST_JB_CONF_FORCE "force"
#define AST_JB_CONF_MAX_SIZE "maxsize"
#define AST_JB_CONF_RESYNCH_THRESHOLD "resyncthreshold"
+#define AST_JB_CONF_TARGET_EXTRA "targetextra"
#define AST_JB_CONF_IMPL "impl"
#define AST_JB_CONF_LOG "log"
diff --git a/main/abstract_jb.c b/main/abstract_jb.c
index c325d3aca..90cd7d14e 100644
--- a/main/abstract_jb.c
+++ b/main/abstract_jb.c
@@ -593,6 +593,10 @@ int ast_jb_read_conf(struct ast_jb_conf *conf, const char *varname, const char *
} else if (!strcasecmp(name, AST_JB_CONF_IMPL)) {
if (!ast_strlen_zero(value))
snprintf(conf->impl, sizeof(conf->impl), "%s", value);
+ } else if (!strcasecmp(name, AST_JB_CONF_TARGET_EXTRA)) {
+ if (sscanf(value, "%30d", &tmp) == 1) {
+ conf->target_extra = tmp;
+ }
} else if (!strcasecmp(name, AST_JB_CONF_LOG)) {
ast_set2_flag(conf, ast_true(value), AST_JB_LOG);
} else {
@@ -739,6 +743,7 @@ static void *jb_create_adaptive(struct ast_jb_conf *general_config, long resynch
jbconf.max_jitterbuf = general_config->max_size;
jbconf.resync_threshold = general_config->resync_threshold;
jbconf.max_contig_interp = 10;
+ jbconf.target_extra = general_config->target_extra;
jb_setconf(adaptivejb, &jbconf);
}