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

语音压缩

开发平台:

Unix_Linux

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