Wed Jan 8 2020 09:50:10

Asterisk developer's documentation


codec_g722.c File Reference

codec_g722.c - translate between signed linear and ITU G.722-64kbps More...

#include "asterisk.h"
#include "asterisk/linkedlists.h"
#include "asterisk/module.h"
#include "asterisk/config.h"
#include "asterisk/translate.h"
#include "asterisk/utils.h"
#include "g722/g722.h"
#include "asterisk/slin.h"
#include "ex_g722.h"

Go to the source code of this file.

Data Structures

struct  g722_decoder_pvt
 
struct  g722_encoder_pvt
 

Macros

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

Functions

static void __reg_module (void)
 
static void __unreg_module (void)
 
static int g722tolin16_new (struct ast_trans_pvt *pvt)
 
static int g722tolin_framein (struct ast_trans_pvt *pvt, struct ast_frame *f)
 
static int g722tolin_new (struct ast_trans_pvt *pvt)
 init a new instance of g722_encoder_pvt. More...
 
static int lin16tog722_new (struct ast_trans_pvt *pvt)
 
static int lintog722_framein (struct ast_trans_pvt *pvt, struct ast_frame *f)
 
static int lintog722_new (struct ast_trans_pvt *pvt)
 init a new instance of g722_encoder_pvt. More...
 
static int load_module (void)
 
static int reload (void)
 
static int unload_module (void)
 

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "ITU G.722-64kbps G722 Transcoder" , .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 = "ac1f6a56484a8820659555499174e588" , .load = load_module, .unload = unload_module, .reload = reload, }
 
static struct ast_module_infoast_module_info = &__mod_info
 
static struct ast_translator g722tolin
 
static struct ast_translator g722tolin16
 
static struct ast_translator lin16tog722
 
static struct ast_translator lintog722
 

Detailed Description

Macro Definition Documentation

#define BUF_SHIFT   5

Definition at line 51 of file codec_g722.c.

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

Definition at line 50 of file codec_g722.c.

Function Documentation

static void __reg_module ( void  )
static

Definition at line 225 of file codec_g722.c.

static void __unreg_module ( void  )
static

Definition at line 225 of file codec_g722.c.

static int g722tolin16_new ( struct ast_trans_pvt pvt)
static

Definition at line 96 of file codec_g722.c.

References g722_decoder_pvt::g722, and ast_trans_pvt::pvt.

97 {
98  struct g722_decoder_pvt *tmp = pvt->pvt;
99 
100  g722_decode_init(&tmp->g722, 64000, 0);
101 
102  return 0;
103 }
g722_decode_state_t g722
Definition: codec_g722.c:64
void * pvt
Definition: translate.h:141
static int g722tolin_framein ( struct ast_trans_pvt pvt,
struct ast_frame f 
)
static

Definition at line 105 of file codec_g722.c.

References ast_frame::data, ast_trans_pvt::datalen, g722_decoder_pvt::g722, ast_trans_pvt::i16, ast_trans_pvt::outbuf, ast_frame::ptr, ast_trans_pvt::pvt, ast_trans_pvt::samples, and ast_frame::samples.

106 {
107  struct g722_decoder_pvt *tmp = pvt->pvt;
108  int out_samples;
109  int in_samples;
110 
111  /* g722_decode expects the samples to be in the invalid samples / 2 format */
112  in_samples = f->samples / 2;
113 
114  out_samples = g722_decode(&tmp->g722, &pvt->outbuf.i16[pvt->samples * sizeof(int16_t)],
115  (uint8_t *) f->data.ptr, in_samples);
116 
117  pvt->samples += out_samples;
118 
119  pvt->datalen += (out_samples * sizeof(int16_t));
120 
121  return 0;
122 }
int datalen
actual space used in outbuf
Definition: translate.h:140
union ast_trans_pvt::@213 outbuf
void * ptr
Definition: frame.h:160
g722_decode_state_t g722
Definition: codec_g722.c:64
void * pvt
Definition: translate.h:141
int16_t * i16
Definition: translate.h:145
union ast_frame::@172 data
int samples
Definition: frame.h:150
static int g722tolin_new ( struct ast_trans_pvt pvt)
static

init a new instance of g722_encoder_pvt.

Definition at line 87 of file codec_g722.c.

References g722_decoder_pvt::g722, and ast_trans_pvt::pvt.

88 {
89  struct g722_decoder_pvt *tmp = pvt->pvt;
90 
91  g722_decode_init(&tmp->g722, 64000, G722_SAMPLE_RATE_8000);
92 
93  return 0;
94 }
g722_decode_state_t g722
Definition: codec_g722.c:64
void * pvt
Definition: translate.h:141
static int lin16tog722_new ( struct ast_trans_pvt pvt)
static

Definition at line 77 of file codec_g722.c.

References g722_encoder_pvt::g722, and ast_trans_pvt::pvt.

78 {
79  struct g722_encoder_pvt *tmp = pvt->pvt;
80 
81  g722_encode_init(&tmp->g722, 64000, 0);
82 
83  return 0;
84 }
void * pvt
Definition: translate.h:141
g722_encode_state_t g722
Definition: codec_g722.c:60
static int lintog722_framein ( struct ast_trans_pvt pvt,
struct ast_frame f 
)
static

Definition at line 124 of file codec_g722.c.

References ast_frame::data, ast_trans_pvt::datalen, g722_encoder_pvt::g722, ast_trans_pvt::outbuf, ast_frame::ptr, ast_trans_pvt::pvt, ast_trans_pvt::samples, ast_frame::samples, and ast_trans_pvt::ui8.

125 {
126  struct g722_encoder_pvt *tmp = pvt->pvt;
127  int outlen;
128 
129  outlen = g722_encode(&tmp->g722, (&pvt->outbuf.ui8[pvt->datalen]),
130  (int16_t *) f->data.ptr, f->samples);
131 
132  pvt->samples += outlen * 2;
133 
134  pvt->datalen += outlen;
135 
136  return 0;
137 }
int datalen
actual space used in outbuf
Definition: translate.h:140
union ast_trans_pvt::@213 outbuf
void * ptr
Definition: frame.h:160
void * pvt
Definition: translate.h:141
uint8_t * ui8
Definition: translate.h:146
g722_encode_state_t g722
Definition: codec_g722.c:60
union ast_frame::@172 data
int samples
Definition: frame.h:150
static int lintog722_new ( struct ast_trans_pvt pvt)
static

init a new instance of g722_encoder_pvt.

Definition at line 68 of file codec_g722.c.

References g722_encoder_pvt::g722, and ast_trans_pvt::pvt.

69 {
70  struct g722_encoder_pvt *tmp = pvt->pvt;
71 
72  g722_encode_init(&tmp->g722, 64000, G722_SAMPLE_RATE_8000);
73 
74  return 0;
75 }
void * pvt
Definition: translate.h:141
g722_encode_state_t g722
Definition: codec_g722.c:60
static int load_module ( void  )
static

Definition at line 204 of file codec_g722.c.

References AST_MODULE_LOAD_FAILURE, AST_MODULE_LOAD_SUCCESS, ast_register_translator, and unload_module().

205 {
206  int res = 0;
207 
212 
213  if (res) {
214  unload_module();
216  }
217 
219 }
static int unload_module(void)
Definition: codec_g722.c:192
static struct ast_translator lintog722
Definition: codec_g722.c:151
static struct ast_translator g722tolin
Definition: codec_g722.c:139
#define ast_register_translator(t)
See __ast_register_translator()
Definition: translate.h:170
static struct ast_translator g722tolin16
Definition: codec_g722.c:163
static struct ast_translator lin16tog722
Definition: codec_g722.c:175
static int reload ( void  )
static

Definition at line 187 of file codec_g722.c.

References AST_MODULE_LOAD_SUCCESS.

188 {
190 }
static int unload_module ( void  )
static

Definition at line 192 of file codec_g722.c.

References ast_unregister_translator().

Referenced by load_module().

193 {
194  int res = 0;
195 
200 
201  return res;
202 }
static struct ast_translator lintog722
Definition: codec_g722.c:151
static struct ast_translator g722tolin
Definition: codec_g722.c:139
int ast_unregister_translator(struct ast_translator *t)
Unregister a translator Unregisters the given tranlator.
Definition: translate.c:942
static struct ast_translator g722tolin16
Definition: codec_g722.c:163
static struct ast_translator lin16tog722
Definition: codec_g722.c:175

Variable Documentation

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "ITU G.722-64kbps G722 Transcoder" , .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 = "ac1f6a56484a8820659555499174e588" , .load = load_module, .unload = unload_module, .reload = reload, }
static

Definition at line 225 of file codec_g722.c.

Definition at line 225 of file codec_g722.c.

struct ast_translator g722tolin
static

Definition at line 139 of file codec_g722.c.

struct ast_translator g722tolin16
static

Definition at line 163 of file codec_g722.c.

struct ast_translator lin16tog722
static

Definition at line 175 of file codec_g722.c.

struct ast_translator lintog722
static

Definition at line 151 of file codec_g722.c.