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

语音压缩

开发平台:

Unix_Linux

  1. #ifndef COMMON_H
  2. #define COMMON_H
  3. #include "parm.h"
  4. #include "qsize.h"
  5. #define real float
  6. #define RCOPY(X,Y,N) memcpy(Y, X,(N)*sizeof(real))
  7. #define EPSILON 1.0e-35
  8. /* Use hand-pipelined loops for higher speed on 21000 */
  9. #define PIPELINE 1
  10. #define REALZEROP(x) ((x<EPSILON)&&(x>-EPSILON))
  11. #define CLIPP(X,LOW,HIGH) ((X)<(LOW)?(LOW):(X)>(HIGH)?(HIGH):(X))
  12. #define FLOAT2FIX(X,N) ((int)  (X))
  13. #define FIX2FLOAT(X)   ((float)(X))
  14. #define VOLATILE
  15. #define sig_scale(SCALE,A,B) 
  16. ({int __i;for(__i=0;__i<IDIM;__i++)(B)[__i]=SCALE*(A)[__i];})
  17. #define sub_sig(A,B,C) 
  18. ({int __i;for(__i=0;__i<IDIM;__i++) (C)[__i]=(A)[__i]-(B)[__i];})
  19. #define pm
  20. #define dm
  21. /* Circular Buffer Register numbers for ADSP21000   */
  22. #define NPUT 8
  23. #define NGET 9
  24. #define real float
  25. #define RCOPY(X,Y,N) memcpy(Y, X,(N)*sizeof(real))
  26. #define EPSILON 1.0e-35
  27. #define IF(X) if(X)
  28. #define ZARR(A) ({for (i=sizeof(A)/sizeof(A[0])-1; i>=0 ; i--) A[i] = 0.0;})
  29. #if 0
  30. #define CHECK1(V) ({if (! (V>=-10000. && V<=10000.)) abort();})
  31. #define CHECK(A,N) ({int __i;for(__i=0;__i<N;__i++)CHECK1((A)[__i]);})
  32. #else
  33. #define CHECK1(V) 
  34. #define CHECK(A,N) 
  35. #endif
  36. #define PWFILTER
  37. #define noCBDEBUG
  38. #define QMEM
  39. #define LPC_MEM
  40. #define PSF_LPC_MEM
  41. #define WIN_MEM
  42. #define CBMEM
  43. #define COEFF_MEM 
  44. #define REG(X)
  45. /* Update obsoleted atomic array */
  46. #define UPDATE(NAME) ({int _i;if(NAME ## _obsolete_p) 
  47.        for(_i=sizeof(NAME)/sizeof(NAME[0])-1;_i>=0;_i--)
  48.        NAME[_i]=NAME ## _next[_i]; NAME ## _obsolete_p=0;})
  49. /* Copy L words to X from circular buffer CIRC *ending* at offset EOS. 
  50.    CL is the size of circular buffe CIRC */
  51. #define CIRCOPY(X,CIRC,EOS,L,CL) ({int _i1,_i2,_i,_lx=0;
  52.  if((EOS)>=(L)){_i1=(EOS)-(L);_i2=(CL);} 
  53.  else            {_i1=0;        _i2=(CL)+(EOS)-(L);}
  54.  for(_i=_i2; _i<(CL);   _i++)X[_lx++]=CIRC[_i];
  55.  for(_i=_i1; _i<(EOS); _i++)X[_lx++]=CIRC[_i];})
  56. /* get queue index of the most recent vector */
  57. #define QINDEX  ({int __qx=vector_end-thequeue; 
  58.       __qx ? QSIZE-IDIM : __qx-IDIM;})
  59. extern real QMEM thequeue[];
  60. extern real QMEM * VOLATILE vector_end;
  61. /* declare array and its copy together with a semafor */
  62. #define ACLASS extern 
  63. ACLASS real sf_coeff[LPC+1];
  64. ACLASS real gp_coeff[LPCLG+1];
  65. ACLASS real pwf_z_coeff[LPCW+1];
  66. ACLASS real pwf_p_coeff[LPCW+1];
  67. ACLASS real shape_energy[NCWD];
  68. ACLASS real imp_resp[IDIM];
  69. ACLASS real sf_coeff_next[LPC+1];
  70. ACLASS real gp_coeff_next[LPCLG+1];
  71. ACLASS real pwf_z_coeff_next[LPCW+1];
  72. ACLASS real pwf_p_coeff_next[LPCW+1];
  73. ACLASS real shape_energy_next[NCWD];
  74. ACLASS real imp_resp_next[IDIM];
  75. ACLASS int sf_coeff_obsolete_p;
  76. ACLASS int gp_coeff_obsolete_p;
  77. ACLASS int pwf_z_coeff_obsolete_p;
  78. ACLASS int pwf_p_coeff_obsolete_p;
  79. ACLASS int shape_energy_obsolete_p;
  80. ACLASS int imp_resp_obsolete_p;
  81. extern real synspeech [QSIZE]; /* Synthesized Speech */
  82. extern real qspeech   [QSIZE]; /* Quantized   Speech */
  83. extern real log_gains[QSIZE/IDIM]; /* Logarithm of Gains */
  84. #ifdef unix
  85. #define FFASE(N) if (ffase == N)
  86. #endif
  87. #define NEXT_FFASE ffase=(ffase==4?1:ffase+1)
  88. extern int VOLATILE ffase;
  89. #undef  ACLASS
  90. #define ACLASS
  91. #endif /*COMMON_H*/