Thu Apr 28 2011 16:57:08

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"
Include dependency graph for codec_g722.c:

Go to the source code of this file.

Data Structures

struct  g722_decoder_pvt
struct  g722_encoder_pvt

Defines

#define BUF_SHIFT   5
#define BUFFER_SAMPLES   8096

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.
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.
static int load_module (void)
static int reload (void)
static int unload_module (void)

Variables

static struct ast_module_info
__MODULE_INFO_SECTION 
__mod_info = { __MODULE_INFO_GLOBALS .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "ITU G.722-64kbps G722 Transcoder" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .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

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

Author:
Matthew Fredrickson <creslin@digium.com>
Russell Bryant <russell@digium.com>

Definition in file codec_g722.c.


Define Documentation

#define BUF_SHIFT   5

Definition at line 47 of file codec_g722.c.

#define BUFFER_SAMPLES   8096

Definition at line 46 of file codec_g722.c.


Function Documentation

static void __reg_module ( void  ) [static]

Definition at line 221 of file codec_g722.c.

static void __unreg_module ( void  ) [static]

Definition at line 221 of file codec_g722.c.

static int g722tolin16_new ( struct ast_trans_pvt pvt) [static]

Definition at line 92 of file codec_g722.c.

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

{
   struct g722_decoder_pvt *tmp = pvt->pvt;

   g722_decode_init(&tmp->g722, 64000, 0);

   return 0;
}
static int g722tolin_framein ( struct ast_trans_pvt pvt,
struct ast_frame f 
) [static]

Definition at line 101 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.

{
   struct g722_decoder_pvt *tmp = pvt->pvt;
   int out_samples;
   int in_samples;

   /* g722_decode expects the samples to be in the invalid samples / 2 format */
   in_samples = f->samples / 2;

   out_samples = g722_decode(&tmp->g722, &pvt->outbuf.i16[pvt->samples * sizeof(int16_t)], 
      (uint8_t *) f->data.ptr, in_samples);

   pvt->samples += out_samples;

   pvt->datalen += (out_samples * sizeof(int16_t));

   return 0;
}
static int g722tolin_new ( struct ast_trans_pvt pvt) [static]

init a new instance of g722_encoder_pvt.

Definition at line 83 of file codec_g722.c.

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

{
   struct g722_decoder_pvt *tmp = pvt->pvt;

   g722_decode_init(&tmp->g722, 64000, G722_SAMPLE_RATE_8000);

   return 0;
}
static int lin16tog722_new ( struct ast_trans_pvt pvt) [static]

Definition at line 73 of file codec_g722.c.

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

{
   struct g722_encoder_pvt *tmp = pvt->pvt;

   g722_encode_init(&tmp->g722, 64000, 0);

   return 0;
}
static int lintog722_framein ( struct ast_trans_pvt pvt,
struct ast_frame f 
) [static]

Definition at line 120 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.

{
   struct g722_encoder_pvt *tmp = pvt->pvt;
   int outlen;

   outlen = g722_encode(&tmp->g722, (&pvt->outbuf.ui8[pvt->datalen]), 
      (int16_t *) f->data.ptr, f->samples);

   pvt->samples += outlen * 2;

   pvt->datalen += outlen;

   return 0;
}
static int lintog722_new ( struct ast_trans_pvt pvt) [static]

init a new instance of g722_encoder_pvt.

Definition at line 64 of file codec_g722.c.

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

{
   struct g722_encoder_pvt *tmp = pvt->pvt;

   g722_encode_init(&tmp->g722, 64000, G722_SAMPLE_RATE_8000);

   return 0;
}
static int load_module ( void  ) [static]
static int reload ( void  ) [static]

Definition at line 183 of file codec_g722.c.

References AST_MODULE_LOAD_SUCCESS.

static int unload_module ( void  ) [static]

Definition at line 188 of file codec_g722.c.

References ast_unregister_translator().

Referenced by load_module().


Variable Documentation

struct ast_module_info __MODULE_INFO_SECTION __mod_info = { __MODULE_INFO_GLOBALS .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "ITU G.722-64kbps G722 Transcoder" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .reload = reload, } [static]

Definition at line 221 of file codec_g722.c.

Definition at line 221 of file codec_g722.c.

struct ast_translator g722tolin [static]

Definition at line 135 of file codec_g722.c.

struct ast_translator g722tolin16 [static]

Definition at line 159 of file codec_g722.c.

struct ast_translator lin16tog722 [static]

Definition at line 171 of file codec_g722.c.

struct ast_translator lintog722 [static]

Definition at line 147 of file codec_g722.c.