mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-13 08:13:22 +00:00
added general Jitterbuffer Implementation. #9960
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@73298 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -75,6 +75,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
|||||||
#include "asterisk/term.h"
|
#include "asterisk/term.h"
|
||||||
#include "asterisk/sched.h"
|
#include "asterisk/sched.h"
|
||||||
#include "asterisk/stringfields.h"
|
#include "asterisk/stringfields.h"
|
||||||
|
#include "asterisk/abstract_jb.h"
|
||||||
#include "asterisk/causes.h"
|
#include "asterisk/causes.h"
|
||||||
|
|
||||||
#include "chan_misdn_config.h"
|
#include "chan_misdn_config.h"
|
||||||
@@ -3228,7 +3229,7 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state, char
|
|||||||
else
|
else
|
||||||
tmp->rings = 0;
|
tmp->rings = 0;
|
||||||
|
|
||||||
|
ast_jb_configure(tmp, misdn_get_global_jbconf());
|
||||||
} else {
|
} else {
|
||||||
chan_misdn_log(-1, 0, "Unable to allocate channel structure\n");
|
chan_misdn_log(-1, 0, "Unable to allocate channel structure\n");
|
||||||
}
|
}
|
||||||
|
@@ -147,4 +147,6 @@ char *misdn_cfg_get_next_group(char *group);
|
|||||||
int misdn_cfg_get_next_port_in_group(int port, char *group);
|
int misdn_cfg_get_next_port_in_group(int port, char *group);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct ast_jb_conf *misdn_get_global_jbconf(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -56,6 +56,17 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
|||||||
#define NUM_GEN_ELEMENTS (sizeof(gen_spec) / sizeof(struct misdn_cfg_spec))
|
#define NUM_GEN_ELEMENTS (sizeof(gen_spec) / sizeof(struct misdn_cfg_spec))
|
||||||
#define NUM_PORT_ELEMENTS (sizeof(port_spec) / sizeof(struct misdn_cfg_spec))
|
#define NUM_PORT_ELEMENTS (sizeof(port_spec) / sizeof(struct misdn_cfg_spec))
|
||||||
|
|
||||||
|
/*! Global jitterbuffer configuration - by default, jb is disabled */
|
||||||
|
static struct ast_jb_conf default_jbconf =
|
||||||
|
{
|
||||||
|
.flags = 0,
|
||||||
|
.max_size = -1,
|
||||||
|
.resync_threshold = -1,
|
||||||
|
.impl = "",
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct ast_jb_conf global_jbconf;
|
||||||
|
|
||||||
enum misdn_cfg_type {
|
enum misdn_cfg_type {
|
||||||
MISDN_CTYPE_STR,
|
MISDN_CTYPE_STR,
|
||||||
MISDN_CTYPE_INT,
|
MISDN_CTYPE_INT,
|
||||||
@@ -910,6 +921,8 @@ static void _build_general_config (struct ast_variable *v)
|
|||||||
int pos;
|
int pos;
|
||||||
|
|
||||||
for (; v; v = v->next) {
|
for (; v; v = v->next) {
|
||||||
|
if (!ast_jb_read_conf(&global_jbconf, v->name, v->value))
|
||||||
|
continue;
|
||||||
if (((pos = get_cfg_position(v->name, GEN_CFG)) < 0) ||
|
if (((pos = get_cfg_position(v->name, GEN_CFG)) < 0) ||
|
||||||
(_parse(&general_cfg[pos], v->value, gen_spec[pos].type, gen_spec[pos].boolint_def) < 0))
|
(_parse(&general_cfg[pos], v->value, gen_spec[pos].type, gen_spec[pos].boolint_def) < 0))
|
||||||
CLI_ERROR(v->name, v->value, "general");
|
CLI_ERROR(v->name, v->value, "general");
|
||||||
@@ -1084,6 +1097,9 @@ int misdn_cfg_init (int this_max_ports)
|
|||||||
|
|
||||||
ast_mutex_init(&config_mutex);
|
ast_mutex_init(&config_mutex);
|
||||||
|
|
||||||
|
/* Copy the default jb config over global_jbconf */
|
||||||
|
memcpy(&global_jbconf, &default_jbconf, sizeof(struct ast_jb_conf));
|
||||||
|
|
||||||
misdn_cfg_lock();
|
misdn_cfg_lock();
|
||||||
|
|
||||||
if (this_max_ports) {
|
if (this_max_ports) {
|
||||||
@@ -1132,4 +1148,6 @@ int misdn_cfg_init (int this_max_ports)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct ast_jb_conf *misdn_get_global_jbconf() {
|
||||||
|
return &global_jbconf;
|
||||||
|
}
|
||||||
|
@@ -129,6 +129,32 @@ crypt_keys=test,muh
|
|||||||
; which are inherited by group sections.
|
; which are inherited by group sections.
|
||||||
;
|
;
|
||||||
|
|
||||||
|
;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
|
||||||
|
; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
|
||||||
|
; SIP channel. Defaults to "no". An enabled jitterbuffer will
|
||||||
|
; be used only if the sending side can create and the receiving
|
||||||
|
; side can not accept jitter. The SIP channel can accept jitter,
|
||||||
|
; thus a jitterbuffer on the receive SIP side will be used only
|
||||||
|
; if it is forced and enabled.
|
||||||
|
|
||||||
|
; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a SIP
|
||||||
|
; channel. Defaults to "no".
|
||||||
|
|
||||||
|
; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
|
||||||
|
|
||||||
|
; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
|
||||||
|
; resynchronized. Useful to improve the quality of the voice, with
|
||||||
|
; big jumps in/broken timestamps, usually sent from exotic devices
|
||||||
|
; and programs. Defaults to 1000.
|
||||||
|
|
||||||
|
; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP
|
||||||
|
; channel. Two implementations are currently available - "fixed"
|
||||||
|
; (with size always equals to jbmaxsize) and "adaptive" (with
|
||||||
|
; variable size, actually the new jb of IAX2). Defaults to fixed.
|
||||||
|
|
||||||
|
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
|
||||||
|
;-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
[default]
|
[default]
|
||||||
|
|
||||||
; define your default context here
|
; define your default context here
|
||||||
|
Reference in New Issue
Block a user