block_dc.c
上传用户:bossps2lzz
上传日期:2022-07-07
资源大小:522k
文件大小:1k
源码类别:

DSP编程

开发平台:

C/C++

  1. /* Written by Sowmya Narayanan and Vasanthan Rangan
  2.  * 
  3.  * block_dc.c 
  4.  * 
  5.  * This program will block DC of input speech signal
  6.  * 
  7.  * 
  8.  * The input will be the speech sample 
  9.  * 
  10.  */
  11.  
  12.  
  13.  
  14. #define dc_coeff 10   /* coefficient for the DC blocking filter */
  15. int dc = 0;           /* current DC estimate (32-bit: SS30-bit) */
  16. short block_dc(short sample)
  17. {
  18.   short word1,word2;
  19.   if (dc < 0) {
  20.     word1 = -((-dc) >> 15);         /* retain the sign when DC < 0 */
  21.    word2 = -((-dc) & 0x00007fff);
  22.   }
  23.   else {
  24.    word1 = dc >> 15;         /* word1 = high-order 15-bit word of dc */
  25.     word2 = dc & 0x00007fff;  /* word2 = low-order 15-bit word of dc */
  26.   }
  27.   dc = word1 * (32768 - dc_coeff) + 
  28.       ((word2 * (32768 - dc_coeff)) >> 15) + 
  29.       sample * dc_coeff;     /* dc = dc*(1-coeff) + sample*coeff  */
  30.   return sample - (dc >> 15); /* return sample - dc */
  31. }