README
上传用户:haomin008
上传日期:2007-01-06
资源大小:12k
文件大小:3k
源码类别:

语音压缩

开发平台:

Unix_Linux

  1. The files in this directory comprise ANSI-C language reference implementations
  2. of the CCITT (International Telegraph and Telephone Consultative Committee)
  3. G.711, G.721 and G.723 voice compressions.  They have been tested on Sun
  4. SPARCstations and passed 82 out of 84 test vectors published by CCITT
  5. (Dec. 20, 1988) for G.721 and G.723.  [The two remaining test vectors,
  6. which the G.721 decoder implementation for u-law samples did not pass,
  7. may be in error because they are identical to two other vectors for G.723_40.]
  8. This source code is released by Sun Microsystems, Inc. to the public domain.
  9. Please give your acknowledgement in product literature if this code is used
  10. in your product implementation.
  11. Sun Microsystems supports some CCITT audio formats in Solaris 2.0 system
  12. software.  However, Sun's implementations have been optimized for higher
  13. performance on SPARCstations.
  14. The source files for CCITT conversion routines in this directory are:
  15. g72x.h header file for g721.c, g723_24.c and g723_40.c
  16. g711.c CCITT G.711 u-law and A-law compression
  17. g72x.c common denominator of G.721 and G.723 ADPCM codes
  18. g721.c CCITT G.721 32Kbps ADPCM coder (with g72x.c)
  19. g723_24.c CCITT G.723 24Kbps ADPCM coder (with g72x.c)
  20. g723_40.c CCITT G.723 40Kbps ADPCM coder (with g72x.c)
  21. Simple conversions between u-law, A-law, and 16-bit linear PCM are invoked
  22. as follows:
  23. unsigned char ucode, acode;
  24. short pcm_val;
  25. ucode = linear2ulaw(pcm_val);
  26. ucode = alaw2ulaw(acode);
  27. acode = linear2alaw(pcm_val);
  28. acode = ulaw2alaw(ucode);
  29. pcm_val = ulaw2linear(ucode);
  30. pcm_val = alaw2linear(acode);
  31. The other CCITT compression routines are invoked as follows:
  32. #include "g72x.h"
  33. struct g72x_state state;
  34. int sample, code;
  35. g72x_init_state(&state);
  36. code = {g721,g723_24,g723_40}_encoder(sample, coding, &state);
  37. sample = {g721,g723_24,g723_40}_decoder(code, coding, &state);
  38. where
  39. coding = AUDIO_ENCODING_ULAW for 8-bit u-law samples
  40.  AUDIO_ENCODING_ALAW for 8-bit A-law samples
  41.  AUDIO_ENCODING_LINEAR for 16-bit linear PCM samples
  42. This directory also includes the following sample programs:
  43. encode.c CCITT ADPCM encoder
  44. decode.c CCITT ADPCM decoder
  45. Makefile makefile for the sample programs
  46. The sample programs contain examples of how to call the various compression
  47. routines and pack/unpack the bits.  The sample programs read byte streams from
  48. stdin and write to stdout.  The input/output data is raw data (no file header
  49. or other identifying information is embedded).  The sample programs are
  50. invoked as follows:
  51. encode [-3|4|5] [-a|u|l] <infile >outfile
  52. decode [-3|4|5] [-a|u|l] <infile >outfile
  53. where:
  54. -3 encode to (decode from) G.723 24kbps (3-bit) data
  55. -4 encode to (decode from) G.721 32kbps (4-bit) data [the default]
  56. -5 encode to (decode from) G.723 40kbps (5-bit) data
  57. -a encode from (decode to) A-law data
  58. -u encode from (decode to) u-law data [the default]
  59. -l encode from (decode to) 16-bit linear data
  60. Examples:
  61. # Read 16-bit linear and output G.721
  62. encode -4 -l <pcmfile >g721file
  63. # Read 40Kbps G.723 and output A-law
  64. decode -5 -a <g723file >alawfile
  65. # Compress and then decompress u-law data using 24Kbps G.723
  66. encode -3 <ulawin | deoced -3 >ulawout