att_proto.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:6k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2. This software module was originally developed by
  3. Peter Kroon (Bell Laboratories, Lucent Technologies)
  4. in the course of development of the MPEG-2 NBC/MPEG-4 Audio standard
  5. ISO/IEC 13818-7, 14496-1,2 and 3. This software module is an
  6. implementation of a part of one or more MPEG-2 NBC/MPEG-4 Audio tools
  7. as specified by the MPEG-2 NBC/MPEG-4 Audio standard. ISO/IEC gives
  8. users of the MPEG-2 NBC/MPEG-4 Audio standards free license to this
  9. software module or modifications thereof for use in hardware or
  10. software products claiming conformance to the MPEG-2 NBC/ MPEG-4 Audio
  11. standards. Those intending to use this software module in hardware or
  12. software products are advised that this use may infringe existing
  13. patents. The original developer of this software module and his/her
  14. company, the subsequent editors and their companies, and ISO/IEC have
  15. no liability for use of this software module or modifications thereof
  16. in an implementation. Copyright is not released for non MPEG-2
  17. NBC/MPEG-4 Audio conforming products. The original developer retains
  18. full right to use the code for his/her own purpose, assign or donate
  19. the code to a third party and to inhibit third party from using the
  20. code for non MPEG-2 NBC/MPEG-4 Audio conforming products. This
  21. copyright notice must be included in all copies or derivative works.
  22. Copyright (c) 1996.
  23.  */
  24. #ifndef _att_proto_h_
  25. #define _att_proto_h_
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29. void att_abs_pitch_estimation(
  30.   float PP_InputSignal[], /* input */
  31.   long frame_size, /* configuration input */
  32.   long lpc_order, /* configuration input */
  33.   float min_pitch_frequency, /* input */
  34.   float max_pitch_frequency, /* input */
  35.   long  sampling_frequency, /* coufiguration input */
  36.   long  lag_candidates[], /* output */
  37.   long  n_lag_candidates /* configuration input */
  38. );
  39. void att_abs_weighting_module( 
  40.  float *a, /* input : lpc coefficients 1 + a1z^-1 + a2 */
  41.  float *ax, /* output: weighted coefficients for numerator  */
  42.  long num_order, /* input : numerator order */
  43.  float *bx, /* output: weighted coefficients for denominator */
  44.  long den_order, /* input : denominator order */
  45.  float gamma_num,   /* weighting factor for numerator */
  46.  float gamma_den    /* weighting factor for denominator */
  47. );
  48. void att_abs_postprocessing( 
  49.  float *input, /* input : signal */
  50.  float *output, /* output: signal */
  51.  float *a, /* input : lpc coefficients 1 + a1z^-1 + a2 */
  52.  long order, /* input : lpc order */
  53.  long len, /* input : frame size */
  54.  long acb_delay, /* input : delay (samples) for pitch postfilter  */
  55.  float acb_gain /* input : adaptive codebook gain */
  56. );
  57. void att_abs_postprocessing16( 
  58.  float *input, /* input : signal */
  59.  float *output, /* output: signal */
  60.  float *a, /* input : lpc coefficients 1 + a1z^-1 + a2 */
  61.  long order, /* input : lpc order */
  62.  long len, /* input : frame size */
  63.  long acb_delay, /* input : delay (samples) for pitch postfilter  */
  64.  float acb_gain /* input : adaptive codebook gain */
  65. );
  66. extern void bwx(
  67.  float *bw, /* ouput : bw expanded coefficients */
  68.  const float *a, /* input : lpc coefficients */
  69.  const float w, /* input : gamma factor */
  70.  const long order /* input : LPC order */
  71. )
  72. ;
  73. extern void firfilt(
  74. float *output, /* output: filtered signal */
  75. const float *input, /* input : signal */
  76. const float *a, /* input : filter coefficients */
  77. float *mem, /* in/out: filter memory */
  78. long order, /* input : filter order */
  79. long length /* input : number of samples to filter */
  80. )
  81. ;
  82. extern void iirfilt(
  83. float *output, /* output: filtered signal */
  84. const float *input, /* input : signal */
  85. const float *a, /* input : filter coefficients */
  86. float *mem, /* in/out: filter memory */
  87. long order, /* input : filter order */
  88. long length /* input : size of data array */
  89. )
  90. ;
  91. extern void  pitchpf(
  92.  float *output, /* output: filtered signal */
  93.  float *input, /* input : unfiltered signal */
  94.  long len, /* input : size of input/output frame */
  95.  long  acb_delay, /* input : acb delay */
  96.  float acb_gain, /* input : acb gain  */
  97.  float *pitchmem, /* in/out: signal buffer  */
  98.  long pitchmemsize /* input : size of pitch buffer */
  99. )
  100. ;
  101. extern void  pitchpf16(
  102.  float *output, /* output: filtered signal */
  103.  float *input, /* input : unfiltered signal */
  104.  long len, /* input : size of input/output frame */
  105.  long  acb_delay, /* input : acb delay */
  106.  float acb_gain, /* input : acb gain  */
  107.  float *pitchmem, /* in/out: signal buffer  */
  108.  long pitchmemsize /* input : size of pitch buffer */
  109. )
  110. ;
  111. extern void testbound(
  112. const long a, /* input: value to be tested */
  113. const long b, /* input: boundary value */
  114. const char *text /* input: program name */
  115. )
  116. ;
  117. /* weighting module */
  118. long pc2rc( /* output: 1 = normal return; 0 = rc[] clipped */
  119. float *rc, /* output: reflection coefficients */
  120. const float *a, /* input : LPC coefficients */
  121. long order /* input : LPC order */
  122. );
  123. long pc2lsf( /* ret 1 on succ, 0 on failure */
  124. float lsf[], /* output: the np line spectral freq. */
  125. const float pc[], /* input : the np+1 predictor coeff. */
  126. long np /* input : order = # of freq to cal. */
  127. );
  128. void lsf2pc(
  129. float *pc, /* output: predictor coeff: 1,a1,a2...*/
  130. const float *lsf, /* input : line-spectral freqs [0,pi] */
  131. long order /* input : predictor order */
  132. );
  133. void lsffir(
  134. float *x, /* out/in: input and output signals */
  135. const float *lsf, /* input : line-spectral freqs, range [0:pi)*/
  136. long order, /* input : order of lsf */
  137. double *w, /* input : filter state (2*(order+1) */
  138. long framel /* input : length of array */
  139. );
  140. float FNevChebP( /* result */
  141. float  x, /* input : value */
  142. const float c[], /* input : Array of coefficient values */
  143. long n /* input : Number of coefficients */
  144. );
  145. #ifdef __cplusplus
  146. }
  147. #endif
  148. #endif