Thu Sep 7 01:03:26 2017

Asterisk developer's documentation


codec_a_mu.c File Reference

codec_a_mu.c - translate between alaw and ulaw directly More...

#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/translate.h"
#include "asterisk/alaw.h"
#include "asterisk/ulaw.h"
#include "asterisk/utils.h"
#include "ex_ulaw.h"
#include "ex_alaw.h"

Go to the source code of this file.

Defines

#define BUFFER_SAMPLES   8000

Functions

static int alawtoulaw_framein (struct ast_trans_pvt *pvt, struct ast_frame *f)
 convert frame data and store into the buffer
 AST_MODULE_INFO_STANDARD (ASTERISK_GPL_KEY,"A-law and Mulaw direct Coder/Decoder")
static int load_module (void)
static int ulawtoalaw_framein (struct ast_trans_pvt *pvt, struct ast_frame *f)
 convert frame data and store into the buffer
static int unload_module (void)
 standard module glue

Variables

static unsigned char a2mu [256]
static struct ast_translator alawtoulaw
static unsigned char mu2a [256]
static struct ast_translator ulawtoalaw

Detailed Description

codec_a_mu.c - translate between alaw and ulaw directly

Definition in file codec_a_mu.c.


Define Documentation

#define BUFFER_SAMPLES   8000

Function Documentation

static int alawtoulaw_framein ( struct ast_trans_pvt pvt,
struct ast_frame f 
) [static]

convert frame data and store into the buffer

Definition at line 50 of file codec_a_mu.c.

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

00051 {
00052    int x = f->samples;
00053    unsigned char *src = f->data.ptr;
00054    unsigned char *dst = pvt->outbuf.uc + pvt->samples;
00055 
00056    pvt->samples += x;
00057    pvt->datalen += x;
00058 
00059    while (x--)
00060       *dst++ = a2mu[*src++];
00061 
00062    return 0;
00063 }

AST_MODULE_INFO_STANDARD ( ASTERISK_GPL_KEY  ,
"A-law and Mulaw direct Coder/Decoder"   
)
static int load_module ( void   )  [static]

Definition at line 113 of file codec_a_mu.c.

References AST_ALAW, AST_LIN2A, AST_LIN2MU, AST_MODULE_LOAD_FAILURE, AST_MODULE_LOAD_SUCCESS, AST_MULAW, ast_register_translator, and ast_unregister_translator().

00114 {
00115    int res;
00116    int x;
00117 
00118    for (x=0;x<256;x++) {
00119       mu2a[x] = AST_LIN2A(AST_MULAW(x));
00120       a2mu[x] = AST_LIN2MU(AST_ALAW(x));
00121    }
00122    res = ast_register_translator(&alawtoulaw);
00123    if (!res)
00124       res = ast_register_translator(&ulawtoalaw);
00125    else
00126       ast_unregister_translator(&alawtoulaw);
00127    if (res)
00128       return AST_MODULE_LOAD_FAILURE;
00129    return AST_MODULE_LOAD_SUCCESS;
00130 }

static int ulawtoalaw_framein ( struct ast_trans_pvt pvt,
struct ast_frame f 
) [static]

convert frame data and store into the buffer

Definition at line 66 of file codec_a_mu.c.

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

00067 {
00068    int x = f->samples;
00069    unsigned char *src = f->data.ptr;
00070    unsigned char *dst = pvt->outbuf.uc + pvt->samples;
00071 
00072    pvt->samples += x;
00073    pvt->datalen += x;
00074 
00075    while (x--)
00076       *dst++ = mu2a[*src++];
00077 
00078    return 0;
00079 }

static int unload_module ( void   )  [static]

standard module glue

Definition at line 103 of file codec_a_mu.c.

References ast_unregister_translator().

00104 {
00105    int res;
00106 
00107    res = ast_unregister_translator(&ulawtoalaw);
00108    res |= ast_unregister_translator(&alawtoulaw);
00109 
00110    return res;
00111 }


Variable Documentation

unsigned char a2mu[256] [static]

Definition at line 43 of file codec_a_mu.c.

struct ast_translator alawtoulaw [static]

Definition at line 81 of file codec_a_mu.c.

unsigned char mu2a[256] [static]

Definition at line 42 of file codec_a_mu.c.

struct ast_translator ulawtoalaw [static]

Definition at line 91 of file codec_a_mu.c.


Generated on 7 Sep 2017 for Asterisk - The Open Source Telephony Project by  doxygen 1.6.1