SecondOrderSection.h
Upload User: anhe341234
Upload Date: 2021-04-11
Package Size: 398k
Code Size: 1k
Category:

Windows Develop

Development Platform:

Visual C++

  1. //---------------------------------------------------------------------------
  2. #ifndef SecondOrderSectionH
  3. #define SecondOrderSectionH
  4. //---------------------------------------------------------------------------
  5. #include <vector>
  6. struct sos_coeffs
  7. {
  8.   float a0,a1,a2,b0,b1,b2;
  9. };
  10. class CSOS
  11. {
  12.   sos_coeffs cf ;
  13.   float xnl[2],ynl[2],xnr[2],ynr[2];
  14. public:
  15.   CSOS() {xnr[0]=xnr[1]=ynr[0]=ynr[1]=xnl[0]=xnl[1]=ynl[0]=ynl[1]=
  16.           cf.a0=cf.a1=cf.a2=cf.b0=cf.b1=cf.b2=0;};
  17.   void SetCoefficients(sos_coeffs& coef)
  18.   {
  19.     cf = coef;
  20.     //Normalize
  21.     cf.b0 /= cf.a0;
  22.     cf.b1 /= cf.a0;
  23.     cf.b2 /= cf.a0;
  24.     cf.a1 /= cf.a0;
  25.     cf.a2 /= cf.a0;
  26.   };
  27.   //Keep integer data
  28.   void Filter(char* in, char* out, int numsamples);
  29.   //Keep float data
  30.   void Filter(float* in, float* out, int numsamples);
  31.   //Convert from float to integer
  32.   void Filter(float* in, char* out, int numsamples);
  33.   //Convert from integer to float
  34.   void Filter(char* in, float* outdata, int numsamples);
  35. };
  36.   
  37. #endif