aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-03-02 19:08:38 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-03-02 19:08:38 +0000
commit3b12e80473a8cff7e04294f9b3e5af0464df3da6 (patch)
treebdf4afac836c65698b3da8e315f9eb5d146aa89c
parent64020820dbf513f2246a26531b419f16a2d9cee7 (diff)
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/trunk@249893 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 b52a03c08..3f8d26d5a 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 df23c3dd1..93a51ae4e 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 cd1dbcfc3..dacd234b3 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -269,7 +269,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 8655806b0..252e3fe20 100644
--- a/channels/chan_gtalk.c
+++ b/channels/chan_gtalk.c
@@ -79,7 +79,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 32d9443d4..145a3f5bb 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 c1181dbfe..b876dfd0d 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 51c4c2b87..80044f484 100644
--- a/channels/chan_local.c
+++ b/channels/chan_local.c
@@ -58,6 +58,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, format_t format, const struct ast_channel *requestor, void *data, int *cause);
diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index 4910b0035..5dfafb84a 100644
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -99,7 +99,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 37717049e..09ca4b830 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 6aa8350e0..9944c00fd 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -555,7 +555,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 b0aa4e0a0..126e94bdc 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -220,7 +220,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 79df46650..0ebf879a1 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 dad7fc91f..e330b9f5c 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 c16650680..82d3547f7 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 0579cb33b..ced5b4485 100644
--- a/configs/alsa.conf.sample
+++ b/configs/alsa.conf.sample
@@ -66,6 +66,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 6f65169c5..942375341 100644
--- a/configs/chan_dahdi.conf.sample
+++ b/configs/chan_dahdi.conf.sample
@@ -855,6 +855,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 9bd502696..606254eee 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 c69602d7a..f5e5473d1 100644
--- a/configs/mgcp.conf.sample
+++ b/configs/mgcp.conf.sample
@@ -40,6 +40,13 @@ matchdigittimeout = 5000 ; defaults 3000 = 3s
; (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 f4ca486e9..9de874e92 100644
--- a/configs/misdn.conf.sample
+++ b/configs/misdn.conf.sample
@@ -132,6 +132,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 d29d3ac52..c3781a2a2 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 7109935e7..c4c4b83ea 100644
--- a/configs/sip.conf.sample
+++ b/configs/sip.conf.sample
@@ -892,6 +892,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 5827787c5..4efa924b8 100644
--- a/include/asterisk/abstract_jb.h
+++ b/include/asterisk/abstract_jb.h
@@ -59,9 +59,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;
};
@@ -71,6 +73,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 dd159c1f0..f23c176b1 100644
--- a/main/abstract_jb.c
+++ b/main/abstract_jb.c
@@ -592,6 +592,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 {
@@ -738,6 +742,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);
}