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{
00035
00036 class ThreeBandCompressor: public FrameTransformationTmpl<Spectrum>
00037 {
00038 InPort<Spectrum> mIn;
00039 OutPort<Spectrum> mOut;
00040
00041 InControl mLowCutoffFreqCtl;
00042 InControl mHighCutoffFreqCtl;
00043 InControl mLowThresholdCtl;
00044 InControl mMidThresholdCtl;
00045 InControl mHighThresholdCtl;
00046 public:
00047 const char* GetClassName() const
00048 {
00049 return "ThreeBandCompressor";
00050 }
00051
00052 ThreeBandCompressor()
00053 :
00054 mIn("In Spectrum", this),
00055 mOut("Out Spectrum", this) ,
00056 mLowCutoffFreqCtl("LowCutoff", this),
00057 mHighCutoffFreqCtl("HighCutoff", this),
00058 mLowThresholdCtl("LowThreshold", this),
00059 mMidThresholdCtl("MidThreshold", this),
00060 mHighThresholdCtl("HighThreshold", this)
00061 {
00062 Configure( FrameTransformationConfig() );
00063 }
00064
00065 ~ThreeBandCompressor() {}
00066
00067 virtual bool InitControls()
00068 {
00069 mLowCutoffFreqCtl.DoControl(1000);
00070 mHighCutoffFreqCtl.DoControl(5000);
00071
00072 mLowThresholdCtl.DoControl(0);
00073 mMidThresholdCtl.DoControl(0);
00074 mHighThresholdCtl.DoControl(0);
00075
00076 return true;
00077 }
00078
00079
00080 bool Do(const Frame& in, Frame& out)
00081 {
00082 return Do(in.GetSpectrum(),
00083 out.GetSpectrum());
00084 }
00085
00086 bool Do(const Spectrum& in, Spectrum& out);
00087
00088 bool Do()
00089 {
00090 bool result = Do(mIn.GetData(), mOut.GetData());
00091 mIn.Consume();
00092 mOut.Produce();
00093 return result;
00094 }
00095 };
00096 };
00097
00098 #endif // _ThreeBandCompressor_