Asterisk - The Open Source Telephony Project GIT-master-27fb039
Loading...
Searching...
No Matches
Functions | Variables
func_jitterbuffer.c File Reference

Put a jitterbuffer on the read side of a channel. More...

#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/framehook.h"
#include "asterisk/frame.h"
#include "asterisk/pbx.h"
#include "asterisk/abstract_jb.h"
#include "asterisk/timing.h"
#include "asterisk/app.h"
Include dependency graph for func_jitterbuffer.c:

Go to the source code of this file.

Functions

static void __reg_module (void)
 
static void __unreg_module (void)
 
struct ast_moduleAST_MODULE_SELF_SYM (void)
 
static int jb_helper (struct ast_channel *chan, const char *cmd, char *data, const char *value)
 
static int load_module (void)
 
static int unload_module (void)
 

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Jitter buffer for read side of channel." , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, .support_level = AST_MODULE_SUPPORT_CORE, }
 
static const struct ast_module_infoast_module_info = &__mod_info
 
static struct ast_custom_function jb_function
 

Detailed Description

Put a jitterbuffer on the read side of a channel.

Author
David Vossel dvoss.nosp@m.el@d.nosp@m.igium.nosp@m..com

Definition in file func_jitterbuffer.c.

Function Documentation

◆ __reg_module()

static void __reg_module ( void  )
static

Definition at line 199 of file func_jitterbuffer.c.

◆ __unreg_module()

static void __unreg_module ( void  )
static

Definition at line 199 of file func_jitterbuffer.c.

◆ AST_MODULE_SELF_SYM()

struct ast_module * AST_MODULE_SELF_SYM ( void  )

Definition at line 199 of file func_jitterbuffer.c.

◆ jb_helper()

static int jb_helper ( struct ast_channel chan,
const char *  cmd,
char *  data,
const char *  value 
)
static

Definition at line 118 of file func_jitterbuffer.c.

119{
120 struct ast_jb_conf jb_conf;
121
122 if (!chan) {
123 ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd);
124 return -1;
125 }
126
127 /* Initialize and set jb_conf */
129
130 /* Now check user options to see if any of the defaults need to change. */
131 if (!ast_strlen_zero(data)) {
132 if (strcasecmp(data, "fixed") &&
133 strcasecmp(data, "adaptive") &&
134 strcasecmp(data, "disabled")) {
135 ast_log(LOG_WARNING, "Unknown Jitterbuffer type %s. Failed to create jitterbuffer.\n", data);
136 return -1;
137 }
138 ast_copy_string(jb_conf.impl, data, sizeof(jb_conf.impl));
139 }
140
141 if (!ast_strlen_zero(value) && strcasecmp(value, "default")) {
142 char *parse = ast_strdupa(value);
143 int res = 0;
148 AST_APP_ARG(sync_video);
149 );
150
152 if (!ast_strlen_zero(args.max_size)) {
154 "jbmaxsize",
155 args.max_size);
156 }
157 if (!ast_strlen_zero(args.resync_threshold)) {
159 "jbresyncthreshold",
161 }
162 if (!ast_strlen_zero(args.target_extra)) {
164 "jbtargetextra",
166 }
167 if (!ast_strlen_zero(args.sync_video)) {
169 "jbsyncvideo",
170 args.sync_video);
171 }
172 if (res) {
173 ast_log(LOG_WARNING, "Invalid jitterbuffer parameters %s\n", value);
174 }
175 }
176
178
179 return 0;
180}
void ast_jb_create_framehook(struct ast_channel *chan, struct ast_jb_conf *jb_conf, int prefer_existing)
Applies a jitterbuffer framehook to a channel based on a provided jitterbuffer config.
void ast_jb_conf_default(struct ast_jb_conf *conf)
Sets the contents of an ast_jb_conf struct to the default jitterbuffer settings.
int ast_jb_read_conf(struct ast_jb_conf *conf, const char *varname, const char *value)
Sets jitterbuffer configuration property.
#define ast_strdupa(s)
duplicate a string in memory from the stack
Definition astmm.h:298
#define ast_log
Definition astobj2.c:42
#define AST_APP_ARG(name)
Define an application argument.
#define AST_DECLARE_APP_ARGS(name, arglist)
Declare a structure to hold an application's arguments.
#define AST_STANDARD_APP_ARGS(args, parse)
Performs the 'standard' argument separation process for an application.
#define LOG_WARNING
static struct @519 args
static force_inline int attribute_pure ast_strlen_zero(const char *s)
Definition strings.h:65
void ast_copy_string(char *dst, const char *src, size_t size)
Size-limited null-terminating string copy.
Definition strings.h:425
General jitterbuffer configuration.
Definition abstract_jb.h:70
long target_extra
amount of additional jitterbuffer adjustment
Definition abstract_jb.h:80
long max_size
Max size of the jitterbuffer implementation.
Definition abstract_jb.h:74
long resync_threshold
Resynchronization threshold of the jitterbuffer implementation.
Definition abstract_jb.h:76
long target_extra
Definition jitterbuf.h:72
long resync_threshold
Definition jitterbuf.h:70
int value
Definition syslog.c:37

References args, AST_APP_ARG, ast_copy_string(), AST_DECLARE_APP_ARGS, ast_jb_conf_default(), ast_jb_create_framehook(), ast_jb_read_conf(), ast_log, AST_STANDARD_APP_ARGS, ast_strdupa, ast_strlen_zero(), LOG_WARNING, ast_jb_conf::max_size, ast_jb_conf::resync_threshold, jb_conf::resync_threshold, ast_jb_conf::target_extra, jb_conf::target_extra, and value.

◆ load_module()

static int load_module ( void  )
static

Definition at line 193 of file func_jitterbuffer.c.

194{
197}
static struct ast_custom_function jb_function
@ AST_MODULE_LOAD_SUCCESS
Definition module.h:70
@ AST_MODULE_LOAD_DECLINE
Module has failed to load, may be in an inconsistent state.
Definition module.h:78
#define ast_custom_function_register(acf)
Register a custom function.
Definition pbx.h:1562

References ast_custom_function_register, AST_MODULE_LOAD_DECLINE, AST_MODULE_LOAD_SUCCESS, and jb_function.

◆ unload_module()

static int unload_module ( void  )
static

Definition at line 188 of file func_jitterbuffer.c.

189{
191}
int ast_custom_function_unregister(struct ast_custom_function *acf)
Unregister a custom function.

References ast_custom_function_unregister(), and jb_function.

Variable Documentation

◆ __mod_info

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Jitter buffer for read side of channel." , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, .support_level = AST_MODULE_SUPPORT_CORE, }
static

Definition at line 199 of file func_jitterbuffer.c.

◆ ast_module_info

const struct ast_module_info* ast_module_info = &__mod_info
static

Definition at line 199 of file func_jitterbuffer.c.

◆ jb_function

struct ast_custom_function jb_function
static
Initial value:
= {
.name = "JITTERBUFFER",
.write = jb_helper,
}
static int jb_helper(struct ast_channel *chan, const char *cmd, char *data, const char *value)

Definition at line 183 of file func_jitterbuffer.c.

183 {
184 .name = "JITTERBUFFER",
185 .write = jb_helper,
186};

Referenced by load_module(), and unload_module().