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.  *
  15.  *
  16.  */
  17.  
  18.  
  19.  
  20. #define dc_coeff 10   /* coefficient for the DC blocking filter */
  21. int dc = 0;           /* current DC estimate (32-bit: SS30-bit) */
  22. short block_dc(short sample)
  23. {
  24.   short word1,word2;
  25.                         
  26.   if (dc < 0) {
  27.     word1 = -((-dc) >> 15);         /* retain the sign when DC < 0 */
  28.    word2 = -((-dc) & 0x00007fff);
  29.   }
  30.   else {
  31.    word1 = dc >> 15;         /* word1 = high-order 15-bit word of dc */
  32.     word2 = dc & 0x00007fff;  /* word2 = low-order 15-bit word of dc */
  33.   }
  34.   dc = word1 * (32768 - dc_coeff) + 
  35.       ((word2 * (32768 - dc_coeff)) >> 15) + 
  36.       sample * dc_coeff;     /* dc = dc*(1-coeff) + sample*coeff  */
  37.   return sample - (dc >> 15); /* return sample - dc */
  38. }