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

📄 g729ev_celp2s_put4pat.c

📁 最新的ITU-T的宽带语音编解码标准G.729.1,是对原先的G.729的最好的调整.码流输出速率可以进行自适应调整.满足未来通信要求.希望对大家有所帮助.
💻 C
字号:
/* ITU-T G.729EV Optimization/Characterization Candidate                         *//* Version:       1.0.a                                                          *//* Revision Date: June 28, 2006                                                  *//*   ITU-T G.729EV Optimization/Characterization Candidate    ANSI-C Source Code   Copyright (c) 2006    France Telecom, Matsushita Electric, Mindspeed, Siemens AG, ETRI, VoiceAge Corp.   All rights reserved*/#include "stl.h"#include "G729EV_G729_defines.h"/*-----------------------------------------------------------* *  Function  G729EV_CELP2S_Put4Patterns()                   * *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    * *   Arranging the 4 tri-pulse patterns                      * *-----------------------------------------------------------*/void G729EV_CELP2S_Put4Patterns(Word16 pos[], /* (i) : positions of the 4 patterns */                                Word16 si[],  /* (i) : signs of the 4 patterns */                                Word16 sp,    /* (i) : amplitude of the side pulses */                                Word16 cod[]  /* (o) : decoded FCB vector */    ){  Word16    i;  Word16   *p_cod, sp_p, sp_m;  p_cod = cod;  FOR(i = 0; i < G729EV_G729_L_SUBFR; i++)  {    *p_cod++ = (Word16) 0;#ifdef WMOPS    move16();#endif  }  sp_m = mult_r(sp, 32766);     /* Q15 */  sp_p = negate(sp);  {    IF(si[0] != 0)    {      if (pos[0] != 0)      {        cod[pos[0] - 1] = sp_m;#ifdef WMOPS        move16();#endif      }      cod[pos[0] + 1] = sp_m;#ifdef WMOPS      move16();#endif    }    ELSE    {      if (pos[0] != 0)      {        cod[pos[0] - 1] = sp_p;#ifdef WMOPS        move16();#endif      }      cod[pos[0] + 1] = sp_p;#ifdef WMOPS      move16();#endif    }  }  FOR(i = 1; i < 3; i++)  {    IF(si[i] != 0)    {      cod[pos[i] - 1] = add(cod[pos[i] - 1], sp_m);      cod[pos[i] + 1] = add(cod[pos[i] + 1], sp_m);#ifdef WMOPS      move16();      move16();#endif    }    ELSE    {      cod[pos[i] - 1] = add(cod[pos[i] - 1], sp_p);      cod[pos[i] + 1] = add(cod[pos[i] + 1], sp_p);#ifdef WMOPS      move16();      move16();#endif    }  }  {    IF(si[3] != 0)    {      cod[pos[3] - 1] = add(cod[pos[3] - 1], sp_m);#ifdef WMOPS      move16();#endif      if (sub(pos[3], 39) != 0)      {        cod[pos[3] + 1] = add(cod[pos[3] + 1], sp_m);#ifdef WMOPS        move16();#endif      }    }    ELSE    {      cod[pos[3] - 1] = add(cod[pos[3] - 1], sp_p);#ifdef WMOPS      move16();#endif      if (sub(pos[3], 39) != 0)      {        cod[pos[3] + 1] = add(cod[pos[3] + 1], sp_p);#ifdef WMOPS        move16();#endif      }    }  }  p_cod = cod;  FOR(i = 0; i < G729EV_G729_L_SUBFR; i++)  {    *p_cod++ = shr_r(cod[i], 2);  /* Q15 -> Q13 */#ifdef WMOPS    move16();#endif  }  FOR(i = 0; i < 4; i++)  {    IF(si[i] != 0)    {      cod[pos[i]] = add(cod[pos[i]], 8191);    }    ELSE    {      cod[pos[i]] = add(cod[pos[i]], -8192);    }#ifdef WMOPS    move16();#endif  }  return;}

⌨️ 快捷键说明

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