⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dcodtau.c

📁 语音CELP压缩解压源代码(C语音)
💻 C
字号:
/**************************************************************************** ROUTINE*		dcodtau** FUNCTION*		 Decodes all pitch tau values for a frame*** SYNOPSIS*		subroutine dcodtau(taubits,taudelta,bitsum1,bitsum2,bitpointer,*				   nn,stream,pddecode,pdtabi,taus)**   formal**                       data    I/O*       name            type    type    function*       -------------------------------------------------------------------*	taubits		int	i	number of bits for quantization*	taudelta	int	i	number of bits for even frame delta*	bitsum1		int	i	number of bits for odd subframes*	bitsum2		int	i	number of bits for even subframes*	bitpointer	int	i/o	number of bits used*	nn		int	i	number of subframes/frame*	stream		short	i	bit stream*	pddecode	real	i	pitch delay permutation table*	pdtabi		int	i	pitch delay table index*	taus		float	o	vector of pitch delays "taus"**   external**       name            type    type    function*       -------------------------------------------------------------------**	plevel1		int		number of full search pitch delays*	plevel2		int		number of delta search pitch delays*	pdelay[]	float		pitch delay coding table****************************************************************************** DESCRIPTION**		This routine converts the pitch delay bits of the *	bitstream to actual delay values.  These delays are output*	to the main routine in taus(i), one delay for each of four*	subframes.****************************************************************************** CALLED BY**       celp** CALLS**       unpack****************************************************************************** REFERENCES****************************************************************************/#include "ccsub.h"extern int plevel1, plevel2;extern float pdelay[MAXPD];dcodtau(taubits, taudelta, bitsum1, bitsum2, bitpointer, nn, stream,         pddecode, pdtabi, taus)int taubits, taudelta, bitsum1, bitsum2, *bitpointer;int pdtabi[], nn;short stream[];float pddecode[], taus[];{  int i, pointer, tptr, mxptr, mnptr;  static int lptr = 0;  pointer = *bitpointer;  for (i = 0; i < nn; i++)  {    if (((i + 1) % 2) != 0)    {      unpack(stream, taubits, &tptr, &pointer);      taus[i] = pddecode[tptr];      pointer += bitsum1 - taubits;    }    else    {      unpack(stream, taudelta, &tptr, &pointer);      pointer += bitsum2 - taudelta;      mnptr = lptr - (plevel2 / 2 - 1);      mxptr = lptr + (plevel2 / 2);      if (mnptr < 0)        mnptr = 0;      if (mxptr > plevel1 - 1)        mnptr = plevel1 - plevel2;      taus[i] = pdelay[tptr + mnptr];    }    lptr = pdtabi[tptr];  }  *bitpointer += taubits;}

⌨️ 快捷键说明

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