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

语音压缩

开发平台:

Unix_Linux

  1. c==========================================================================
  2. c
  3. c ROUTINE
  4. c pack (pack decimal representation into binary)
  5. c
  6. c FUNCTION
  7. c Input decimal value and number of binary bits, 
  8. c program returns binary value packed in array.
  9. c
  10. c SYNOPSIS
  11. c subroutine pack(value, bits, steambits, array, pointer)
  12. c
  13. c   formal 
  14. c
  15. c                       data    I/O
  16. c       name            type    type    function
  17. c       -------------------------------------------------------------------
  18. c value I I decimal value
  19. c bits I I number of bits to convert to
  20. c (ie. 01001 for 5 bits, 1st 0 incl.)
  21. c streambits I I number of bits in CELP frame
  22. c array I*2 O array to which one bit is assigned
  23. c for binary representation
  24. c pointer I I/O points to appropriate element in
  25. c array
  26. c
  27. c==========================================================================
  28. c
  29. c DESCRIPTION
  30. c
  31. c This program packs a decimal value into a binary value
  32. c to be decoded by unpack.f in CELP synthesizer sections.
  33. c
  34. c**************************************************************************
  35. c
  36. subroutine pack(value, bits, streambits, array, pointer)
  37. c
  38. implicit undefined(a-z)
  39. integer dvalue, i
  40. integer value, bits, pointer, streambits
  41. integer*2 array(streambits)
  42. real rvalue, rem
  43. c
  44. rvalue=float(value)
  45. do 10 i=1,bits
  46.   rem=amod(rvalue,2.0)
  47.   if (rem .eq. 0.0) then
  48.     array(pointer)=0
  49.   else
  50.     array(pointer)=1
  51.   end if
  52.   dvalue=ifix(rvalue/2.0)
  53.   rvalue=float(dvalue)
  54.   pointer=pointer+1
  55. 10 continue
  56. return
  57. end
  58.