aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-03-02 19:20:05 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-03-02 19:20:05 +0000
commit726b50e7fb6c32f2809f9fb2f4fcfea2d6e29346 (patch)
tree1383285c88fad694b030060c746598cd9c42c748
parentc12416ef9c863cc624118d6d36b2ecb0905c4e7c (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.0@249907 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 5a375c5c0..1975df0ca 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 0d2d6360b..935c081ed 100644
--- a/channels/chan_console.c
+++ b/channels/chan_console.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_dahdi.c b/channels/chan_dahdi.c
index cecbfa46b..94a899549 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -120,7 +120,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 884438316..0020feba6 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 c44e0597f..697b90d30 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 b47679b0d..ba463e9c7 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 385344461..94893ebd0 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 067bc13d7..07cf590bb 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 e6126d264..cd87efea8 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 6e45b882c..a00929901 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -252,7 +252,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 126c18bb7..a04a56493 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -151,7 +151,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 90ed73b3c..4480c9de1 100644
--- a/channels/chan_unistim.c
+++ b/channels/chan_unistim.c
@@ -188,10 +188,11 @@ static void dummy(char *dummy, ...)
/*! \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 26d686a8a..0092d7683 100644
--- a/channels/chan_usbradio.c
+++ b/channels/chan_usbradio.c
@@ -131,6 +131,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 a3b956888..f51c655a9 100644
--- a/channels/misdn_config.c
+++ b/channels/misdn_config.c
@@ -57,6 +57,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 9e6c34f9d..942e0da35 100644
--- a/configs/chan_dahdi.conf.sample
+++ b/configs/chan_dahdi.conf.sample
@@ -763,6 +763,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 104891e8a..78ee42a3d 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 98fcd29c6..deaede5cb 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 24b0b38ee..e748124d2 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 f68361424..141b29636 100644
--- a/configs/sip.conf.sample
+++ b/configs/sip.conf.sample
@@ -726,6 +726,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 af5b61431..8d78653dd 100644
--- a/main/abstract_jb.c
+++ b/main/abstract_jb.c
@@ -584,6 +584,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 {
@@ -730,6 +734,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);
}