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

📄 post_pro.c

📁 C源程序---G.729a语音代码G.729a语音代码
💻 C
字号:
/*   ITU-T G.729A Speech Coder    ANSI-C Source Code   Version 1.1    Last modified: September 1996   Copyright (c) 1996,   AT&T, France Telecom, NTT, Universite de Sherbrooke   All rights reserved.*//*------------------------------------------------------------------------* * Function Post_Process()                                                * *                                                                        * * Post-processing of output speech.                                      * *   - 2nd order high pass filter with cut off frequency at 100 Hz.       * *   - Multiplication by two of output speech with saturation.            * *-----------------------------------------------------------------------*/#include "typedef.h"#include "basic_op.h"#include "oper_32b.h"#include "ld8a.h"#include "tab_ld8a.h"/*------------------------------------------------------------------------* * 2nd order high pass filter with cut off frequency at 100 Hz.           * * Designed with SPPACK efi command -40 dB att, 0.25 ri.                  * *                                                                        * * Algorithm:                                                             * *                                                                        * *  y[i] = b[0]*x[i]   + b[1]*x[i-1]   + b[2]*x[i-2]                      * *                     + a[1]*y[i-1]   + a[2]*y[i-2];                     * *                                                                        * *     b[3] = {0.93980581E+00, -0.18795834E+01, 0.93980581E+00};          * *     a[3] = {0.10000000E+01, 0.19330735E+01, -0.93589199E+00};          * *-----------------------------------------------------------------------*//* Static values to be preserved between calls *//* y[] values is keep in double precision      */static Word16 y2_hi, y2_lo, y1_hi, y1_lo, x0, x1;/* Initialization of static values */void Init_Post_Process(void){  y2_hi = 0;  y2_lo = 0;  y1_hi = 0;  y1_lo = 0;  x0   = 0;  x1   = 0;}void Post_Process(  Word16 signal[],    /* input/output signal */  Word16 lg)          /* length of signal    */{  Word16 i, x2;  Word32 L_tmp;  for(i=0; i<lg; i++)  {     x2 = x1;     x1 = x0;     x0 = signal[i];     /*  y[i] = b[0]*x[i]   + b[1]*x[i-1]   + b[2]*x[i-2]    */     /*                     + a[1]*y[i-1] + a[2] * y[i-2];      */     L_tmp     = Mpy_32_16(y1_hi, y1_lo, a100[1]);     L_tmp     = L_add(L_tmp, Mpy_32_16(y2_hi, y2_lo, a100[2]));     L_tmp     = L_mac(L_tmp, x0, b100[0]);     L_tmp     = L_mac(L_tmp, x1, b100[1]);     L_tmp     = L_mac(L_tmp, x2, b100[2]);     L_tmp     = L_shl(L_tmp, 2);      /* Q29 --> Q31 (Q13 --> Q15) */     /* Multiplication by two of output speech with saturation. */     signal[i] = round(L_shl(L_tmp, 1));     y2_hi = y1_hi;     y2_lo = y1_lo;     L_Extract(L_tmp, &y1_hi, &y1_lo);  }  return;}

⌨️ 快捷键说明

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