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

语音压缩

开发平台:

Unix_Linux

  1. C==========================================================================
  2. C
  3. C ROUTINE
  4. C               confg
  5. C
  6. C FUNCTION
  7. C               computes initial states (direct form filters)
  8. C
  9. C SYNOPSIS
  10. C
  11. C       subroutine confg(s,l,d1,d2,d3,d4,isw1,isw2,isw3,isw4)
  12. C
  13. C   formal 
  14. C
  15. C                       data    I/O
  16. C       name            type    type    function
  17. C       -------------------------------------------------------------------
  18. C       s(l)            real    i       speech or residual segment
  19. C       l               int     i       segment size
  20. C       d1              real    i/o     memory 1/P(z)
  21. C       d2              real    i/o     memory 1/A(z)
  22. C       d3              real    i/o     memory A(z)
  23. C       d4              real    i/o     memory 1/A(z/gamma)
  24. C       isw1            int     i       = 1 enable 1/P(z)
  25. C       isw2            int     i       = 1 enable 1/A(z)
  26. C       isw3            int     i       = 1 enable A(z)
  27. C       isw4            int     i       = 1 enable 1/A(z/gamma)
  28. C
  29. C   global 
  30. C                       data    I/O
  31. C       name            type    type    function
  32. C       -------------------------------------------------------------------
  33. C /ccsub/       see description include file
  34. C
  35. C==========================================================================
  36. C*-
  37.         subroutine confg(s,l,d1,d2,d3,d4,isw1,isw2,isw3,isw4)
  38. implicit undefined(a-z)
  39. integer l, isw1, isw2, isw3, isw4
  40.         real s(l)
  41. include 'ccsub.com'
  42. convex #include "ccsub.com"
  43. real d1(maxpa),d2(maxno+1),d3(maxno+1),d4(maxno+1)
  44. real fctemp(maxno+1)
  45. integer i
  46. c att
  47.         if (isw1 .ne. 0) call pitchvq(e0, l, d1, idb, bb,'long')
  48.         if (isw2 .ne. 0) call polefilt(fc, no, d2, e0, l)
  49. c
  50.         do 10 i = 1, l
  51.             e0(i) = s(i) - e0(i)
  52. 10      continue
  53. c
  54.         if (isw3 .ne. 0) call zerofilt(fc,no,d3,e0,l)
  55.         if (isw4 .ne. 0) then
  56.    call bwexp(gamma, fc, fctemp, no)
  57.    call polefilt(fctemp, no, d4, e0, l)
  58. end if
  59.         return
  60.         end