SampleAndHold.cxx
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 #include "SampleAndHold.hxx"
00023 #include "ProcessingFactory.hxx"
00024
00025 namespace CLAM
00026 {
00027 namespace Hidden
00028 {
00029 static const char * metadata[] = {
00030 "key", "SampleAndHold",
00031 "category", "Spectral Transformations",
00032 "description", "SampleAndHold",
00033 0
00034 };
00035 static FactoryRegistrator<ProcessingFactory, SampleAndHold> reg = metadata;
00036 }
00037
00038 bool SampleAndHold::Do(const Spectrum& in, Spectrum& out)
00039 {
00040 if ( !mConfig.GetPreserveOuts() )
00041 {
00042 out = in;
00043 }
00044
00045
00046
00047 mFrameSize = 1024;
00048
00049 if(mTimeElapsed == 0 ||mAmount.GetLastValue()<1. ) mSpectrum = in;
00050
00051 if (mTimeElapsed>mAmount.GetLastValue()) {
00052 mTimeElapsed = 0;
00053 }
00054 else {
00055 mTimeElapsed += mFrameSize / in.GetSpectralRange() / 0.002;
00056 }
00057
00058 out = mSpectrum;
00059
00060 return true;
00061 }
00062
00063
00064
00065 }
00066