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

语音压缩

开发平台:

Unix_Linux

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