.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
.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);
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
.max_size = -1,
.resync_threshold = -1,
.impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf; /*!< Global jitterbuffer configuration */
.flags = 0,
.max_size = -1,
.resync_threshold = -1,
- .impl = ""
+ .impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
/*! \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;
.max_size = -1,
.resync_threshold = -1,
.impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
.max_size = -1,
.resync_threshold = -1,
.impl = "",
+ .target_extra = -1,
};
static struct ast_jb_conf global_jbconf;
; (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".
;-----------------------------------------------------------------------------------
; (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".
;-----------------------------------------------------------------------------------
;
; (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".
;-----------------------------------------------------------------------------------
; (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".
;-----------------------------------------------------------------------------------
; (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".
;-----------------------------------------------------------------------------------
; (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".
;-----------------------------------------------------------------------------------
; (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".
;-----------------------------------------------------------------------------------
; (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".
;-----------------------------------------------------------------------------------
/*! \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;
};
#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"
} 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 {
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);
}