acb_code.c

来自「4.8k/s速率FS1016标准语音压缩源码」· C语言 代码 · 共 123 行

C
123
字号
          /*LINTLIBRARY*/          /*PROTOLIB1*/#include <math.h>#include "main.h"#include "acb_code.h"static float ACBGainTable[32] ={  -0.993, -0.831, -0.693, -0.555, -0.414, -0.229,    0.0,  0.139,   0.255,  0.368,  0.457,  0.531,  0.601,  0.653,  0.702,  0.745,   0.780,  0.816,  0.850,  0.881,  0.915,  0.948,  0.983,  1.020,    1.062,  1.117,  1.193,  1.289,  1.394,  1.540,  1.765,  1.991};/**************************************************************************** ROUTINE*		ACBGainEncode** FUNCTION**		encode and quantize ACB gain for various*		quantizer types.** SYNOPSIS*		ACBGainEncode(UGain, *QGain)**   formal**                       data    I/O*       name            type    type    function*       -------------------------------------------------------------------*	UGain		float	i	pitch gain input (true value)*	QGain		int	o	encoded pitch gain index**	ACBGainEncode	float	fun	encoded pitch gain****************************************************************************** DESCRIPTION**	This funtion uses output level data obtained by Max's minimum*	distortion quantization priciples and quantizes to the nearest*	level (L1 norm).  (Using level data only was found superior to*	using both of Max's level and boundry data.)****************************************************************************** CALLED BY**	AdaptiveAnalysis Encode Decode****************************************************************************** REFERENCES**	Quantizing for Minimum Distorion*	J. Max*	IRE Trans. Inform. Theory, vol. IT-6, pp.7-12, Mar. 1960***************************************************************************/float ACBGainEncode(float 	UGain, int 	*QGain){  int i;  float dist, low;    low = dist = fabs(UGain - *ACBGainTable);  *QGain = 0;  for (i = 1; i < 32; i++)  {    dist = fabs(UGain - ACBGainTable[i]);    if (dist < low)    {      low = dist;      *QGain = i;    }  }  return (ACBGainTable[*QGain]);}/**************************************************************************** ROUTINE*		ACBGainDecode** FUNCTION**		decode ACB gain from table ** SYNOPSIS*		ACBGainDecode(QGain, UGain)**   formal**                       data    I/O*       name            type    type    function*       -------------------------------------------------------------------*	QGain		int	i	Quantized ACB Gain*	UGain		float	o	Unquantized ACB Gain******************************************************************************	The data used in the table generation is from 3m3f.spd.****************************************************************************** REFERENCES**	Quantizing for Minimum Distorion*	J. Max*	IRE Trans. Inform. Theory, vol. IT-6, pp.7-12, Mar. 1960***************************************************************************/void ACBGainDecode(int 	QGain, float 	*UGain){  *UGain = ACBGainTable[QGain];}

⌨️ 快捷键说明

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