3BandCompressor.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 _ThreeBandCompressor_
00025 #define _ThreeBandCompressor_
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
00034 namespace CLAM{
00049 class ThreeBandCompressor: public FrameTransformationTmpl<Spectrum>
00050 {
00051 InPort<Spectrum> mIn;
00052 OutPort<Spectrum> mOut;
00053
00054 FloatInControl mLowCutoffFreqCtl;
00055 FloatInControl mHighCutoffFreqCtl;
00056 FloatInControl mLowThresholdCtl;
00057 FloatInControl mMidThresholdCtl;
00058 FloatInControl mHighThresholdCtl;
00059 public:
00060 const char* GetClassName() const
00061 {
00062 return "ThreeBandCompressor";
00063 }
00064
00065 ThreeBandCompressor()
00066 : mIn("In Spectrum", this)
00067 , mOut("Out Spectrum", this)
00068 , mLowCutoffFreqCtl("LowCutoff", this)
00069 , mHighCutoffFreqCtl("HighCutoff", this)
00070 , mLowThresholdCtl("LowThreshold", this)
00071 , mMidThresholdCtl("MidThreshold", this)
00072 , mHighThresholdCtl("HighThreshold", this)
00073 {
00074 Configure( FrameTransformationConfig() );
00075 mLowCutoffFreqCtl.SetBounds(0.,1.);
00076 mHighCutoffFreqCtl.SetBounds(0.,1.);
00077 }
00078
00079 ~ThreeBandCompressor() {}
00080
00081 virtual bool InitControls()
00082 {
00083 mLowCutoffFreqCtl.DoControl(1000);
00084 mHighCutoffFreqCtl.DoControl(5000);
00085
00086 mLowThresholdCtl.DoControl(0);
00087 mMidThresholdCtl.DoControl(0);
00088 mHighThresholdCtl.DoControl(0);
00089
00090 return true;
00091 }
00092
00093 bool Do(const Frame& in, Frame& out)
00094 {
00095 return Do(in.GetSpectrum(), out.GetSpectrum());
00096 }
00097
00098 bool Do(const Spectrum& in, Spectrum& out);
00099
00100 bool Do()
00101 {
00102 bool result = Do(mIn.GetData(), mOut.GetData());
00103 mIn.Consume();
00104 mOut.Produce();
00105 return result;
00106 }
00107 };
00108 }
00109
00110 #endif // _ThreeBandCompressor_