Fri Aug 24 02:24:10 2007

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 <fcntl.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "asterisk/lock.h"
#include "asterisk/logger.h"
#include "asterisk/module.h"
#include "asterisk/translate.h"
#include "asterisk/channel.h"
#include "asterisk/alaw.h"
#include "asterisk/ulaw.h"
#include "asterisk/utils.h"
#include "ulaw_slin_ex.h"

Include dependency graph for codec_a_mu.c:

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
static struct ast_framealawtoulaw_sample (void)
 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 struct ast_frameulawtoalaw_sample (void)
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

Definition at line 46 of file codec_a_mu.c.

Referenced by gsmtolin_framein(), ilbctolin_framein(), lintogsm_framein(), lintolpc10_framein(), lpc10tolin_framein(), register_translator(), and speextolin_framein().


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 56 of file codec_a_mu.c.

References ast_trans_pvt::datalen, f, ast_trans_pvt::outbuf, and ast_trans_pvt::samples.

00057 {
00058    int x = f->samples;
00059    unsigned char *src = f->data;
00060    unsigned char *dst = (unsigned char *)pvt->outbuf + pvt->samples;
00061 
00062    pvt->samples += x;
00063    pvt->datalen += x;
00064 
00065    while (x--)
00066       *dst++ = a2mu[*src++];
00067 
00068    return 0;
00069 }

static struct ast_frame* alawtoulaw_sample ( void   )  [static]

Definition at line 90 of file codec_a_mu.c.

References AST_FORMAT_ALAW, AST_FRAME_VOICE, f, and ulaw_slin_ex.

00091 {
00092    static struct ast_frame f;
00093    f.frametype = AST_FRAME_VOICE;
00094    f.subclass = AST_FORMAT_ALAW;
00095    f.datalen = sizeof(ulaw_slin_ex);
00096    f.samples = sizeof(ulaw_slin_ex);
00097    f.mallocd = 0;
00098    f.offset = 0;
00099    f.src = __PRETTY_FUNCTION__;
00100    f.data = ulaw_slin_ex; /* XXX what ? */
00101    return &f;
00102 }

AST_MODULE_INFO_STANDARD ( ASTERISK_GPL_KEY  ,
"A-law and Mulaw direct Coder/Decoder"   
)

static int load_module ( void   )  [static]

Definition at line 150 of file codec_a_mu.c.

References alawtoulaw, AST_ALAW, AST_LIN2A, AST_LIN2MU, AST_MULAW, ast_register_translator, ast_unregister_translator(), and ulawtoalaw.

00151 {
00152    int res;
00153    int x;
00154 
00155    for (x=0;x<256;x++) {
00156       mu2a[x] = AST_LIN2A(AST_MULAW(x));
00157       a2mu[x] = AST_LIN2MU(AST_ALAW(x));
00158    }
00159    res = ast_register_translator(&alawtoulaw);
00160    if (!res)
00161       res = ast_register_translator(&ulawtoalaw);
00162    else
00163       ast_unregister_translator(&alawtoulaw);
00164 
00165    return res;
00166 }

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 72 of file codec_a_mu.c.

References ast_trans_pvt::datalen, f, ast_trans_pvt::outbuf, and ast_trans_pvt::samples.

00073 {
00074    int x = f->samples;
00075    unsigned char *src = f->data;
00076    unsigned char *dst = (unsigned char *)pvt->outbuf + pvt->samples;
00077 
00078    pvt->samples += x;
00079    pvt->datalen += x;
00080 
00081    while (x--)
00082       *dst++ = mu2a[*src++];
00083 
00084    return 0;
00085 }

static struct ast_frame* ulawtoalaw_sample ( void   )  [static]

Definition at line 104 of file codec_a_mu.c.

References AST_FORMAT_ULAW, AST_FRAME_VOICE, f, and ulaw_slin_ex.

00105 {
00106    static struct ast_frame f;
00107    f.frametype = AST_FRAME_VOICE;
00108    f.subclass = AST_FORMAT_ULAW;
00109    f.datalen = sizeof(ulaw_slin_ex);
00110    f.samples = sizeof(ulaw_slin_ex);
00111    f.mallocd = 0;
00112    f.offset = 0;
00113    f.src = __PRETTY_FUNCTION__;
00114    f.data = ulaw_slin_ex;
00115    return &f;
00116 }

static int unload_module ( void   )  [static]

standard module glue

Definition at line 140 of file codec_a_mu.c.

References alawtoulaw, ast_unregister_translator(), and ulawtoalaw.

00141 {
00142    int res;
00143 
00144    res = ast_unregister_translator(&ulawtoalaw);
00145    res |= ast_unregister_translator(&alawtoulaw);
00146 
00147    return res;
00148 }


Variable Documentation

unsigned char a2mu[256] [static]

Definition at line 49 of file codec_a_mu.c.

struct ast_translator alawtoulaw [static]

Definition at line 118 of file codec_a_mu.c.

Referenced by load_module(), and unload_module().

unsigned char mu2a[256] [static]

Definition at line 48 of file codec_a_mu.c.

struct ast_translator ulawtoalaw [static]

Definition at line 128 of file codec_a_mu.c.

Referenced by load_module(), and unload_module().


Generated on Fri Aug 24 02:24:11 2007 for Asterisk - the Open Source PBX by  doxygen 1.5.1