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

语音压缩

开发平台:

Unix_Linux

  1. c==========================================================================
  2. c
  3. c ROUTINE
  4. c dcodcbg.f
  5. c
  6. c FUNCTION
  7. c  Decodes all code book gains for a frame
  8. c
  9. c
  10. c SYNOPSIS
  11. c subroutine dcodcbg(cbgbits,bitsum1,bitsum2,nn,cbg)
  12. c
  13. c   formal 
  14. c
  15. c                       data    I/O
  16. c       name            type    type    function
  17. c       -------------------------------------------------------------------
  18. c cbgbits int i number of bits for quantization
  19. c cbgtype char i quantizer type
  20. c bitsum1 int i number of bits for odd subframes
  21. c bitsum2 int i number of bits for even subframes
  22. c bitpointer int i/o number of bits used
  23. c nn int i number of subframes/frame
  24. c stream int*2 i bit stream
  25. c streambits int i number of bits in stream
  26. c cbg real o vector of code book indicies
  27. c
  28. c==========================================================================
  29. c
  30. c DESCRIPTION
  31. c
  32. c
  33. c==========================================================================
  34. c
  35. c REFERENCES
  36. c
  37. c
  38. c**************************************************************************
  39. c
  40. subroutine dcodcbg(cbgbits,cbgtype,bitsum1,bitsum2,bitpointer,nn,
  41.      &                      stream,streambits,cbg)
  42. implicit undefined(a-z)
  43. c
  44. integer cbgbits,bitsum1,bitsum2,bitpointer,nn,streambits
  45. integer*2 stream(streambits)
  46. real cbg(nn)
  47. character*10 cbgtype
  48. integer i,pointer,index
  49. c
  50. pointer=bitpointer
  51. do 10 i=1,nn
  52.    call unpack(stream,cbgbits,streambits,index,pointer)
  53.    call gaindecode(index,cbgbits,cbgtype,cbg(i))
  54.    if (i.eq.1 .or. i.eq.3 .or. i.eq.5) then
  55.       pointer=pointer+bitsum2-cbgbits
  56.    else if (i.eq.2 .or. i.eq.4 .or. i.eq.6) then
  57.       pointer=pointer+bitsum1-cbgbits
  58.    else
  59.       print *,' dcodcbg:  Error in decoding code book gain'
  60.    end if
  61. 10 continue
  62. bitpointer=bitpointer+cbgbits
  63. return
  64. end