g723.c

来自「symbian 系统下的g.723 g.723_24实现, 本源码在 serie」· C语言 代码 · 共 100 行

C
100
字号
//////////////////////////////////////////////////
// G723.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#include "typedef2.h"
#include "cst2.h"
#include "tab2.h"
#include "lbccode2.h"
#include "coder2.h"
#include "decod2.h"
#include "exc2.h"
#include "util2.h"
#include "codcng2.h"
#include "deccng2.h"
#include "vad2.h"
#include "g723.h"

/* Global variables */
enum  Wmode   WrkMode = Both;
enum  Crate   WrkRate = Rate63;

Flag  UseHp = True;
Flag  UsePf = True;
Flag  UseVx = False;
Flag  UsePr = True;
int   ReinitSize = 0;


void G723_Encode_Init(int bitrateidx)
{
    Init_Coder( ) ;

	/* Init Comfort Noise Functions */
	if( UseVx ) 
	{
		Init_Vad();
		Init_Cod_Cng( );
	}

	WrkRate = bitrateidx ? Rate63 : Rate53;
}

void G723_Decode_Init(int bitrateidx)
{
    Init_Decod( ) ;
    Init_Dec_Cng( );

	WrkRate = bitrateidx ? Rate63 : Rate53;
}

FLOAT EncBuf[240];

//int G723_EncodeFrame(unsigned char *InBuf,unsigned char *OutBuf)
int G723_EncodeFrame(short *InBuf,unsigned char *OutBuf)
{
	int i;


	for(i=0;i<240;i++)
	//	EncBuf[i] = InBuf[i];//((short *)InBuf)[i];
		EncBuf[i] = InBuf[i];//((short *)InBuf)[i];
	Coder(EncBuf, OutBuf) ;
	return 0;
}

FLOAT DecBuf[240];
  
int G723_DecodeFrame(unsigned char *InBuf,unsigned char *OutBuf)
{
	Word16 Crc = 0;
	short *ptmp=(short *)OutBuf;
	int i;

	Decod(DecBuf, InBuf, Crc);

	for(i=0;i<240;i++)
	{
		if (DecBuf[i] < (FLOAT)-32767.5)
			ptmp[i] = -32768L;
		else if (DecBuf[i] > (FLOAT)32766.5)
			ptmp[i] = 32767;
		else
		{
			if (DecBuf[i] < 0)
				ptmp[i] = (Word16) (DecBuf[i]-(FLOAT)0.5);
			else
				ptmp[i] = (Word16) (DecBuf[i]+(FLOAT)0.5);
		}
	}

	return 0;
}



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?