clip.c
上传用户:szhypcb168
上传日期:2007-01-06
资源大小:2187k
文件大小:1k
源码类别:

语音压缩

开发平台:

Unix_Linux

  1. /**************************************************************************
  2. *
  3. * ROUTINE
  4. *               clip
  5. *
  6. * FUNCTION
  7. * determine if speech is clipped
  8. *
  9. * SYnoPSIS
  10. *               function clip(s, l)
  11. *
  12. *   formal 
  13. *
  14. *                       data    I/O
  15. *       name            type    type    function
  16. *       -------------------------------------------------------------------
  17. * s float i input speech
  18. * l int i length of input speech
  19. *
  20. ***************************************************************************
  21. *
  22. * CALLED BY
  23. *
  24. * celp
  25. *
  26. * CALLS
  27. *
  28. *
  29. *
  30. **************************************************************************/
  31. #include <math.h>
  32. #define TRUE 1
  33. #define FALSE 0
  34. clip(s, l)
  35. int l;
  36. float s[];
  37. {
  38.   int i, count;
  39.   float sum;
  40.   /* Count number of clippings and sum their magnitudes */
  41.   count = 0;
  42.   sum = 0.0;
  43.   for (i = 0; i < l; i++)
  44.   {
  45.     if (fabs(s[i]) > 32768.0)
  46.     {
  47.       count++;
  48.       sum += fabs(s[i]);
  49.     }
  50.   }
  51.   /* Clipping heuristics (could also use energy, delta energy, etc.) */
  52.   return(((count >= 10) || (count >= 5 && sum > 1.e6)) ? TRUE : FALSE);
  53. }