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

codec_alaw.c - translate between signed linear and alaw More...

#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/config.h"
#include "asterisk/translate.h"
#include "asterisk/alaw.h"
#include "asterisk/utils.h"
#include "asterisk/slin.h"
#include "ex_alaw.h"
Include dependency graph for codec_alaw.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)
 
static int alawtolin_framein (struct ast_trans_pvt *pvt, struct ast_frame *f)
 decode frame into lin and fill output buffer.
 
struct ast_moduleAST_MODULE_SELF_SYM (void)
 
static int lintoalaw_framein (struct ast_trans_pvt *pvt, struct ast_frame *f)
 convert and store input samples in output buffer
 
static int load_module (void)
 
static int unload_module (void)
 

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "A-law Coder/Decoder" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, }
 
static struct ast_translator alawtolin
 
static const struct ast_module_infoast_module_info = &__mod_info
 
static struct ast_translator lintoalaw
 

Detailed Description

codec_alaw.c - translate between signed linear and alaw

Definition in file codec_alaw.c.

Macro Definition Documentation

◆ BUFFER_SAMPLES

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

Definition at line 38 of file codec_alaw.c.

Function Documentation

◆ __reg_module()

static void __reg_module ( void  )
static

Definition at line 143 of file codec_alaw.c.

◆ __unreg_module()

static void __unreg_module ( void  )
static

Definition at line 143 of file codec_alaw.c.

◆ alawtolin_framein()

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

decode frame into lin and fill output buffer.

Definition at line 45 of file codec_alaw.c.

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 while (i--)
55 *dst++ = AST_ALAW(*src++);
56
57 return 0;
58}
#define AST_ALAW(a)
Definition alaw.h:84
union ast_frame::@239 data
union ast_trans_pvt::@308 outbuf
int datalen
actual space used in outbuf
Definition translate.h:218
int16_t * i16
Definition translate.h:223

References AST_ALAW, 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.

◆ AST_MODULE_SELF_SYM()

struct ast_module * AST_MODULE_SELF_SYM ( void  )

Definition at line 143 of file codec_alaw.c.

◆ lintoalaw_framein()

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

convert and store input samples in output buffer

Definition at line 61 of file codec_alaw.c.

62{
63 int i = f->samples;
64 char *dst = pvt->outbuf.c + pvt->samples;
65 int16_t *src = f->data.ptr;
66
67 pvt->samples += i;
68 pvt->datalen += i; /* 1 byte/sample */
69
70 while (i--)
71 *dst++ = AST_LIN2A(*src++);
72
73 return 0;
74}
#define AST_LIN2A(a)
Definition alaw.h:50

References AST_LIN2A, 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.

◆ load_module()

static int load_module ( void  )
static

Definition at line 124 of file codec_alaw.c.

125{
126 int res;
127
130
131 if (res) {
134 }
135
137}
static struct ast_translator alawtolin
Definition codec_alaw.c:76
static struct ast_translator lintoalaw
Definition codec_alaw.c:95
static int unload_module(void)
Definition codec_alaw.c:114
@ 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_register_translator(t)
See __ast_register_translator()
Definition translate.h:258

References alawtolin, AST_MODULE_LOAD_DECLINE, AST_MODULE_LOAD_SUCCESS, ast_register_translator, lintoalaw, and unload_module().

◆ unload_module()

static int unload_module ( void  )
static

Definition at line 114 of file codec_alaw.c.

115{
116 int res;
117
120
121 return res;
122}
int ast_unregister_translator(struct ast_translator *t)
Unregister a translator Unregisters the given translator.
Definition translate.c:1350

References alawtolin, ast_unregister_translator(), and lintoalaw.

Referenced by load_module().

Variable Documentation

◆ __mod_info

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "A-law Coder/Decoder" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, }
static

Definition at line 143 of file codec_alaw.c.

◆ alawtolin

struct ast_translator alawtolin
static

Definition at line 76 of file codec_alaw.c.

76 {
77 .name = "alawtolin",
78 .src_codec = {
79 .name = "alaw",
81 .sample_rate = 8000,
82 },
83 .dst_codec = {
84 .name = "slin",
86 .sample_rate = 8000,
87 },
88 .format = "slin",
89 .framein = alawtolin_framein,
90 .sample = alaw_sample,
91 .buffer_samples = BUFFER_SAMPLES,
92 .buf_size = BUFFER_SAMPLES * 2,
93};
@ AST_MEDIA_TYPE_AUDIO
Definition codec.h:32
#define BUFFER_SAMPLES
Definition codec_alaw.c:38
static int alawtolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
decode frame into lin and fill output buffer.
Definition codec_alaw.c:45
static struct ast_frame * alaw_sample(void)
Definition ex_alaw.h:26

Referenced by load_module(), and unload_module().

◆ ast_module_info

const struct ast_module_info* ast_module_info = &__mod_info
static

Definition at line 143 of file codec_alaw.c.

◆ lintoalaw

struct ast_translator lintoalaw
static

Definition at line 95 of file codec_alaw.c.

95 {
96 .name = "lintoalaw",
97 .src_codec = {
98 .name = "slin",
100 .sample_rate = 8000,
101 },
102 .dst_codec = {
103 .name = "alaw",
104 .type = AST_MEDIA_TYPE_AUDIO,
105 .sample_rate = 8000,
106 },
107 .format = "alaw",
108 .framein = lintoalaw_framein,
109 .sample = slin8_sample,
110 .buffer_samples = BUFFER_SAMPLES,
111 .buf_size = BUFFER_SAMPLES,
112};
static int lintoalaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
convert and store input samples in output buffer
Definition codec_alaw.c:61
static struct ast_frame * slin8_sample(void)
Definition slin.h:64

Referenced by load_module(), and unload_module().