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

语音压缩

开发平台:

Unix_Linux

  1. /**************************************************************************
  2. *
  3. * ROUTINE
  4. * dcodcbg.c
  5. *
  6. * FUNCTION
  7. *  Decodes all code book gains for a frame
  8. *
  9. *
  10. * SYNOPSIS
  11. * subroutine dcodcbg(cbgbits,bitsum1,bitsum2,bitpointer,
  12. *                    nn,stream,cbg)
  13. *
  14. *   formal
  15. *
  16. *                       data    I/O
  17. *       name            type    type    function
  18. *       -------------------------------------------------------------------
  19. * cbgbits int i number of bits for quantization
  20. * bitsum1 int i number of bits for odd subframes
  21. * bitsum2 int i number of bits for even subframes
  22. * bitpointer int i/o number of bits used
  23. * nn int i number of subframes/frame
  24. * stream short i bit stream
  25. * cbg float o vector of code book indicies
  26. *
  27. ***************************************************************************
  28. *
  29. * DESCRIPTION
  30. *
  31. *
  32. ***************************************************************************
  33. *
  34. * CALLED BY
  35. *
  36. *       celp
  37. *
  38. * CALLS
  39. *
  40. *       gaindecode unpack
  41. *
  42. ***************************************************************************
  43. *
  44. * REFERENCES
  45. *
  46. *
  47. **************************************************************************/
  48. dcodcbg(cbgbits, bitsum1, bitsum2, bitpointer, nn, stream, cbg)
  49. int cbgbits, bitsum1, bitsum2, *bitpointer, nn;
  50. short stream[];
  51. float cbg[];
  52. {
  53.   int i, pointer, index;
  54.   pointer = *bitpointer;
  55.   for (i = 0; i < nn; i++)
  56.   {
  57.     unpack(stream, cbgbits, &index, &pointer);
  58.     gaindecode(index, cbgbits, &cbg[i]);
  59.     if (i == 0 || i == 2 || i == 4)
  60.       pointer += bitsum2 - cbgbits;
  61.     else if (i == 1 || i == 3 || i == 5)
  62.       pointer += bitsum1 - cbgbits;
  63.     else
  64.       printf("dcodcbg: ***Error in decoding cbgainn");
  65.   }
  66.   *bitpointer += cbgbits;
  67. }