Asterisk - The Open Source Telephony Project  18.5.0
Macros | Functions | Variables
codec_ulaw.c File Reference

codec_ulaw.c - translate between signed linear and ulaw More...

#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/config.h"
#include "asterisk/translate.h"
#include "asterisk/ulaw.h"
#include "asterisk/utils.h"
#include "asterisk/slin.h"
#include "ex_ulaw.h"
Include dependency graph for codec_ulaw.c:

Go to the source code of this file.

Macros

#define BUFFER_SAMPLES   8096 /* size for the translation buffers */
 

Functions

static void __reg_module (void)
 
static void __unreg_module (void)
 
struct ast_moduleAST_MODULE_SELF_SYM (void)
 
static int lintoulaw_framein (struct ast_trans_pvt *pvt, struct ast_frame *f)
 convert and store samples in outbuf More...
 
static int load_module (void)
 
static int ulawtolin_framein (struct ast_trans_pvt *pvt, struct ast_frame *f)
 convert and store samples in outbuf More...
 
static int unload_module (void)
 

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "mu-Law Coder/Decoder" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "30ef0c93b36035ec78c9cfd712d36d9b" , .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, }
 
static const struct ast_module_infoast_module_info = &__mod_info
 
static struct ast_translator lintotestlaw
 
static struct ast_translator lintoulaw
 The complete translator for LinToulaw. More...
 
static struct ast_translator testlawtolin
 
static struct ast_translator ulawtolin
 The complete translator for ulawToLin. More...
 

Detailed Description

codec_ulaw.c - translate between signed linear and ulaw

Definition in file codec_ulaw.c.

Macro Definition Documentation

◆ BUFFER_SAMPLES

#define BUFFER_SAMPLES   8096 /* size for the translation buffers */

Definition at line 38 of file codec_ulaw.c.

Function Documentation

◆ __reg_module()

static void __reg_module ( void  )
static

Definition at line 194 of file codec_ulaw.c.

◆ __unreg_module()

static void __unreg_module ( void  )
static

Definition at line 194 of file codec_ulaw.c.

◆ AST_MODULE_SELF_SYM()

struct ast_module* AST_MODULE_SELF_SYM ( void  )

Definition at line 194 of file codec_ulaw.c.

◆ lintoulaw_framein()

static int lintoulaw_framein ( struct ast_trans_pvt pvt,
struct ast_frame f 
)
static

convert and store samples in outbuf

Definition at line 62 of file codec_ulaw.c.

References AST_LIN2MU, ast_trans_pvt::c, ast_frame::data, ast_trans_pvt::datalen, ast_trans_pvt::outbuf, ast_frame::ptr, ast_frame::samples, and ast_trans_pvt::samples.

63 {
64  int i = f->samples;
65  char *dst = pvt->outbuf.c + pvt->samples;
66  int16_t *src = f->data.ptr;
67 
68  pvt->samples += i;
69  pvt->datalen += i; /* 1 byte/sample */
70 
71  while (i--)
72  *dst++ = AST_LIN2MU(*src++);
73 
74  return 0;
75 }
int datalen
actual space used in outbuf
Definition: translate.h:218
short int16_t
Definition: db.h:59
union ast_trans_pvt::@327 outbuf
union ast_frame::@263 data
#define AST_LIN2MU(a)
Definition: ulaw.h:49

◆ load_module()

static int load_module ( void  )
static

Definition at line 173 of file codec_ulaw.c.

References AST_MODFLAG_DEFAULT, AST_MODULE_INFO(), AST_MODULE_LOAD_DECLINE, AST_MODULE_LOAD_SUCCESS, AST_MODULE_SUPPORT_CORE, ast_register_translator, ASTERISK_GPL_KEY, and unload_module().

174 {
175  int res;
176 
181 
182  if (res) {
183  unload_module();
185  }
186 
188 }
static struct ast_translator ulawtolin
The complete translator for ulawToLin.
Definition: codec_ulaw.c:81
static struct ast_translator testlawtolin
Definition: codec_ulaw.c:100
static int unload_module(void)
Definition: codec_ulaw.c:161
static struct ast_translator lintotestlaw
Definition: codec_ulaw.c:142
#define ast_register_translator(t)
See __ast_register_translator()
Definition: translate.h:257
Module has failed to load, may be in an inconsistent state.
Definition: module.h:78
static struct ast_translator lintoulaw
The complete translator for LinToulaw.
Definition: codec_ulaw.c:123

◆ ulawtolin_framein()

static int ulawtolin_framein ( struct ast_trans_pvt pvt,
struct ast_frame f 
)
static

convert and store samples in outbuf

Definition at line 45 of file codec_ulaw.c.

References AST_MULAW, ast_frame::data, ast_trans_pvt::datalen, ast_trans_pvt::i16, ast_trans_pvt::outbuf, ast_frame::ptr, ast_frame::samples, and ast_trans_pvt::samples.

46 {
47  int i = f->samples;
48  unsigned char *src = f->data.ptr;
49  int16_t *dst = pvt->outbuf.i16 + pvt->samples;
50 
51  pvt->samples += i;
52  pvt->datalen += i * 2; /* 2 bytes/sample */
53 
54  /* convert and copy in outbuf */
55  while (i--)
56  *dst++ = AST_MULAW(*src++);
57 
58  return 0;
59 }
int datalen
actual space used in outbuf
Definition: translate.h:218
short int16_t
Definition: db.h:59
int16_t * i16
Definition: translate.h:223
#define AST_MULAW(a)
Definition: ulaw.h:85
union ast_trans_pvt::@327 outbuf
union ast_frame::@263 data

◆ unload_module()

static int unload_module ( void  )
static

Definition at line 161 of file codec_ulaw.c.

References ast_unregister_translator().

Referenced by load_module().

162 {
163  int res;
164 
169 
170  return res;
171 }
static struct ast_translator ulawtolin
The complete translator for ulawToLin.
Definition: codec_ulaw.c:81
static struct ast_translator testlawtolin
Definition: codec_ulaw.c:100
static struct ast_translator lintotestlaw
Definition: codec_ulaw.c:142
int ast_unregister_translator(struct ast_translator *t)
Unregister a translator Unregisters the given tranlator.
Definition: translate.c:1333
static struct ast_translator lintoulaw
The complete translator for LinToulaw.
Definition: codec_ulaw.c:123

Variable Documentation

◆ __mod_info

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "mu-Law Coder/Decoder" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "30ef0c93b36035ec78c9cfd712d36d9b" , .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, }
static

Definition at line 194 of file codec_ulaw.c.

◆ ast_module_info

const struct ast_module_info* ast_module_info = &__mod_info
static

Definition at line 194 of file codec_ulaw.c.

◆ lintotestlaw

struct ast_translator lintotestlaw
static

Definition at line 142 of file codec_ulaw.c.

◆ lintoulaw

struct ast_translator lintoulaw
static

The complete translator for LinToulaw.

Definition at line 123 of file codec_ulaw.c.

◆ testlawtolin

struct ast_translator testlawtolin
static

Definition at line 100 of file codec_ulaw.c.

◆ ulawtolin

struct ast_translator ulawtolin
static

The complete translator for ulawToLin.

Definition at line 81 of file codec_ulaw.c.