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

语音压缩

开发平台:

Unix_Linux

  1. /*
  2.  * This source code is a product of Sun Microsystems, Inc. and is provided
  3.  * for unrestricted use.  Users may copy or modify this source code without
  4.  * charge.
  5.  *
  6.  * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
  7.  * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  8.  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
  9.  *
  10.  * Sun source code is provided with no support and without any obligation on
  11.  * the part of Sun Microsystems, Inc. to assist in its use, correction,
  12.  * modification or enhancement.
  13.  *
  14.  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  15.  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
  16.  * OR ANY PART THEREOF.
  17.  *
  18.  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  19.  * or profits or other special, indirect and consequential damages, even if
  20.  * Sun has been advised of the possibility of such damages.
  21.  *
  22.  * Sun Microsystems, Inc.
  23.  * 2550 Garcia Avenue
  24.  * Mountain View, California  94043
  25.  */
  26. /*
  27.  * g72x.h
  28.  *
  29.  * Header file for CCITT conversion routines.
  30.  *
  31.  */
  32. #ifndef _G72X_H
  33. #define _G72X_H
  34. #define AUDIO_ENCODING_ULAW (1) /* ISDN u-law */
  35. #define AUDIO_ENCODING_ALAW (2) /* ISDN A-law */
  36. #define AUDIO_ENCODING_LINEAR (3) /* PCM 2's-complement (0-center) */
  37. /*
  38.  * The following is the definition of the state structure
  39.  * used by the G.721/G.723 encoder and decoder to preserve their internal
  40.  * state between successive calls.  The meanings of the majority
  41.  * of the state structure fields are explained in detail in the
  42.  * CCITT Recommendation G.721.  The field names are essentially indentical
  43.  * to variable names in the bit level description of the coding algorithm
  44.  * included in this Recommendation.
  45.  */
  46. struct g72x_state {
  47. long yl; /* Locked or steady state step size multiplier. */
  48. short yu; /* Unlocked or non-steady state step size multiplier. */
  49. short dms; /* Short term energy estimate. */
  50. short dml; /* Long term energy estimate. */
  51. short ap; /* Linear weighting coefficient of 'yl' and 'yu'. */
  52. short a[2]; /* Coefficients of pole portion of prediction filter. */
  53. short b[6]; /* Coefficients of zero portion of prediction filter. */
  54. short pk[2]; /*
  55.  * Signs of previous two samples of a partially
  56.  * reconstructed signal.
  57.  */
  58. short dq[6]; /*
  59.  * Previous 6 samples of the quantized difference
  60.  * signal represented in an internal floating point
  61.  * format.
  62.  */
  63. short sr[2]; /*
  64.  * Previous 2 samples of the quantized difference
  65.  * signal represented in an internal floating point
  66.  * format.
  67.  */
  68. char td; /* delayed tone detect, new in 1988 version */
  69. };
  70. /* External function definitions. */
  71. extern void g72x_init_stat(struct g72x_state *);
  72. extern int g721_encoder(
  73. int sample,
  74. int in_coding,
  75. struct g72x_state *state_ptr);
  76. extern int g721_decoder(
  77. int code,
  78. int out_coding,
  79. struct g72x_state *state_ptr);
  80. extern int g723_24_encoder(
  81. int sample,
  82. int in_coding,
  83. struct g72x_state *state_ptr);
  84. extern int g723_24_decoder(
  85. int code,
  86. int out_coding,
  87. struct g72x_state *state_ptr);
  88. extern int g723_40_encoder(
  89. int sample,
  90. int in_coding,
  91. struct g72x_state *state_ptr);
  92. extern int g723_40_decoder(
  93. int code,
  94. int out_coding,
  95. struct g72x_state *state_ptr);
  96. #endif /* !_G72X_H */