vdecode.c
上传用户:tsjrly
上传日期:2021-02-19
资源大小:107k
文件大小:1k
源码类别:

语音压缩

开发平台:

C/C++

  1. /**************************************************************************
  2. *
  3. * ROUTINE
  4. * vdecode
  5. *
  6. * FUNCTION
  7. *
  8. * create excitation vector from code book index and decoded gain
  9. *
  10. * SYNOPSIS
  11. * subroutine vdecode(decodedgain, l, vdecoded)
  12. *
  13. *   formal
  14. *
  15. *                       data    I/O
  16. *       name            type    type    function
  17. *       -------------------------------------------------------------------
  18. * decodedgain r i decoded gain value
  19. * l i i pitch&code frame length
  20. * vdecoded r o decoded excitation array
  21. *
  22. *   external
  23. *                       data    I/O
  24. *       name            type    type    function
  25. *       -------------------------------------------------------------------
  26. *       x[] float i
  27. *
  28. ***************************************************************************
  29. *
  30. * CALLED BY
  31. *
  32. *       celp
  33. *
  34. * CALLS
  35. *
  36. *
  37. *
  38. **************************************************************************/
  39. #include "ccsub.h"
  40. extern int cbindex, frame;
  41. extern float x[MAXCODE];
  42. vdecode(decodedgain, l, vdecoded)
  43. int l;
  44. float decodedgain, vdecoded[];
  45. {
  46.   int i, codeword;
  47.   /* *copy selected vector to excitation array      */
  48.   codeword = 2 * (MAXNCSIZE - cbindex);
  49.   if (codeword < 0)
  50.   {
  51.     printf("vdecode: cbindex > MAXNCSIZE at frame %dn", frame);
  52.     codeword = 0;
  53.   }
  54.   for (i = 0; i < l; i++)
  55.     vdecoded[i] = x[i + codeword] * decodedgain;
  56. }