Deesser.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _Deesser_
00025 #define _Deesser_
00026
00027 #include "InPort.hxx"
00028 #include "OutPort.hxx"
00029 #include "InControl.hxx"
00030 #include "Frame.hxx"
00031 #include "FrameTransformation.hxx"
00032 #include "FrameTransformationConfig.hxx"
00033 #include "SpectralNotch.hxx"
00034
00035 namespace CLAM{
00036
00037 class Deesser: public FrameTransformationTmpl<Spectrum>
00038 {
00039 InPort<Spectrum> mIn;
00040 OutPort<Spectrum> mOut;
00041
00042 FloatInControl mLowCutoffFreqCtl;
00043 FloatInControl mHighCutoffFreqCtl;
00044 FloatInControl mThresholdCtl;
00045 public:
00046 const char* GetClassName() const
00047 {
00048 return "Deesser";
00049 }
00050
00051 Deesser()
00052 :
00053 mIn("In Spectrum", this),
00054 mOut("Out Spectrum", this) ,
00055 mLowCutoffFreqCtl("LowCutoff", this),
00056 mHighCutoffFreqCtl("HighCutoff", this),
00057 mThresholdCtl("Threshold", this)
00058 {
00059 Configure( FrameTransformationConfig() );
00060 mNotch.Configure( FrameTransformationConfig() );
00061 }
00062
00063 ~Deesser() {}
00064
00065 virtual bool InitControls()
00066 {
00067 mLowCutoffFreqCtl.DoControl(3000);
00068 mHighCutoffFreqCtl.DoControl(6000);
00069 mThresholdCtl.DoControl(-30);
00070
00071 return true;
00072 }
00073
00074 bool Do(const Frame& in, Frame& out)
00075 {
00076 return Do(in.GetSpectrum(),
00077 out.GetSpectrum());
00078 }
00079
00080 bool Do(const Spectrum& in, Spectrum& out);
00081
00082 bool Do()
00083 {
00084 bool result = Do(mIn.GetData(), mOut.GetData());
00085 mIn.Consume();
00086 mOut.Produce();
00087 return result;
00088 }
00089 private:
00090 SpectralNotch mNotch;
00091 };
00092 };
00093
00094 #endif // _Deesser_