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

📄 funcg722.c

📁 ITU-T G.191中包含的G.722语音压缩编解码程序
💻 C
📖 第 1 页 / 共 4 页
字号:
*/#define AH   s->ah#define BH   s->bh#define DETH s->deth#define DH  s->dh #define NBH  s->nbh#define PH  s->ph #define RH  s->rh #define SH   s->sh#define SPH  s->sph #define SZH  s->szhWord16 hsbdec (ih, rs, s)Word16 ih;Word16 rs;g722_state *s;{  Word16          nbph, yh;  if (rs == 1)  {    DETH = 8;    SH = SPH = SZH = NBH = 0;    AH[1] = AH[2] = 0;    BH[1] = BH[2] = BH[3] = BH[4] = BH[5] = BH[6] = 0;    DH[0] = DH[1] = DH[2] = DH[3] = DH[4] = DH[5] = DH[6] = 0;    PH[0] = PH[1] = PH[2] = 0;    RH[0] = RH[1] = RH[2] = 0;    return (0);  }  DH[0] = invqah (ih, DETH);  nbph = logsch (ih, NBH);  NBH = nbph;  DETH = scaleh (nbph);  PH[0] = parrec (DH[0], SZH);  RH[0] = recons (SH, DH[0]);  upzero (DH, BH);  uppol2 (AH, PH);  uppol1 (AH, PH);  SZH = filtez (DH, BH);  SPH = filtep (RH, AH);  SH = predic (SPH, SZH);  yh = limit (RH[0]);  return (yh);}#undef AH#undef BH#undef DETH#undef DH#undef NBH#undef PH#undef RH#undef SH#undef SPH#undef SZH/* ........................ End of hsbdec() ........................ *//*___________________________________________________________________________                                                                                Function Name : quantl                                                                                                                                  Purpose :                                                                                                                                                .                                                                                                  Inputs :                                                                                                                                                                                                                            Outputs :                                                                                                                                                none                                                                                                                                                   Return Value :                                                                                                                                       ___________________________________________________________________________*/Word16 quantl (el, detl)Word16 el;Word16 detl;{ /* table to read IL frorm SIL and MIL: misil(sil(0,1),mil(1,31)) */  static Word16   misil[2][32] =  {    {0x0000, 0x003F, 0x003E, 0x001F, 0x001E, 0x001D, 0x001C, 0x001B,     0x001A, 0x0019, 0x0018, 0x0017, 0x0016, 0x0015, 0x0014, 0x0013,     0x0012, 0x0011, 0x0010, 0x000F, 0x000E, 0x000D, 0x000C, 0x000B,     0x000A, 0x0009, 0x0008, 0x0007, 0x0006, 0x0005, 0x0004, 0x0000},    {0x0000, 0x003D, 0x003C, 0x003B, 0x003A, 0x0039, 0x0038, 0x0037,     0x0036, 0x0035, 0x0034, 0x0033, 0x0032, 0x0031, 0x0030, 0x002F,     0x002E, 0x002D, 0x002C, 0x002B, 0x002A, 0x0029, 0x0028, 0x0027,     0x0026, 0x0025, 0x0024, 0x0023, 0x0022, 0x0021, 0x0020, 0x0000}  }; /* 6 levels quantizer level od decision */  static Word16   q6[31] =  {    0, 35, 72, 110, 150, 190, 233, 276,    323, 370, 422, 473, 530, 587, 650, 714,    786, 858, 940, 1023, 1121, 1219, 1339, 1458,    1612, 1765, 1980, 2195, 2557, 2919, 3200  };  Word16          sil, mil, wd, val;  sil = shr (el, 15);  wd = (sil == 0) ? el : sub (MAX_16, (el & MAX_16));  mil = 0;  val = mult (q6[mil] * 8, detl);  while (val <= wd)  {    if (mil == 30)    {      break;    }    else    {      ++mil;      val = mult (q6[mil] * 8, detl);    }  }  return (misil[++sil][mil]);}/* ..................... End of quantl() ..................... *//*___________________________________________________________________________                                                                                Function Name quanth:                                                                                                                                   Purpose :                                                                                                                                                .                                                                                                  Inputs :                                                                                                                                                                                                                            Outputs :                                                                                                                                                none                                                                                                                                                   Return Value :                                                                                                                                       ___________________________________________________________________________*/Word16 quanth (eh, deth)Word16 eh;Word16 deth;{  static Word16   misih[2][3] =  {    {0, 1, 0},    {0, 3, 2}  };  static Word16   q2 = 564;  Word16          sih, mih, wd;  sih = shr (eh, 15);  wd = (sih == 0) ? eh : sub (MAX_16, (eh & MAX_16));  if (wd >= mult (shl (q2, 3), deth))  {    mih = 2;  }  else  {    mih = 1;  }  return (misih[++sih][mih]);}/* ..................... End of quanth() ..................... *//*___________________________________________________________________________                                                                                Function Name : filtep                                                                                                                                  Purpose :                                                                                                                                                .                                                                                                  Inputs :                                                                                                                                                                                                                            Outputs :                                                                                                                                                none                                                                                                                                                   Return Value :                                                                                                                                       ___________________________________________________________________________*/Word16 filtep (rlt, al)Word16 rlt [];Word16 al [];{  Word16          wd1, wd2, spl;  /* shift of rlt */  rlt[2] = rlt[1];		  rlt[1] = rlt[0];		  wd1 = add (rlt[1], rlt[1]);  wd1 = mult (al[1], wd1);  wd2 = add (rlt[2], rlt[2]);  wd2 = mult (al[2], wd2);  spl = add (wd1, wd2);  return (spl);}/* ..................... End of filtep() ..................... *//*___________________________________________________________________________                                                                                Function Name : filtez                                                                                                                                  Purpose :                                                                                                                                                .                                                                                                  Inputs :                                                                                                                                                                                                                            Outputs :                                                                                                                                                none                                                                                                                                                   Return Value :                                                                                                                                       ___________________________________________________________________________*/Word16 filtez (dlt, bl)Word16 dlt [];Word16 bl [];{  Word16          szl, wd[7];  Word16          i;  for (i = 6, szl = 0; i > 0; i--)  {    wd[i] = add (dlt[i], dlt[i]);    wd[i] = mult (wd[i], bl[i]);    szl = add (szl, wd[i]);  }  return (szl);}/* ..................... End of filtez() ..................... *//*___________________________________________________________________________                                                                                Function Name : invqal                                                                                                                                  Purpose :                                                                                                                                                .                                                                                                  Inputs :                                                                                                                                                                                                                            Outputs :                                                                                                                                                none                                                                                                                                                   Return Value :                                                                                                                                       ___________________________________________________________________________*/Word16 invqal (il, detl)Word16 il;Word16 detl;{  /* inverse quantizer 4 bits for encoder or decoder */  static Word16   ril4[16] =  {0, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 1, 0};  static Word16   risil[16] =  {0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0};  static Word16   oq4[8] =  {0, 150, 323, 530, 786, 1121, 1612, 2557};  /* Local variables */  Word16          ril, wd1, wd2;  ril = shr (il, 2);  wd1 = shl (oq4[ril4[ril]], 3);  wd2 = (risil[ril] == 0) ? wd1 : negate (wd1);  return (mult (detl, wd2));}/* ..................... End of invqal() ..................... *//*___________________________________________________________________________                                                                                Function Name : invqbl                                                                                                                                  Purpose :                                                                                                                                           

⌨️ 快捷键说明

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