SDIFIn.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 "SDIFIn.hxx"
00023 #include "SpectrumConfig.hxx"
00024 #include "ErrOpenFile.hxx"
00025 #include "Frame.hxx"
00026 #include "Segment.hxx"
00027 #include "SpectralPeakArray.hxx"
00028 #include "Fundamental.hxx"
00029 #include "SDIFFile.hxx"
00030 #include "SDIFFrame.hxx"
00031 #include "SDIFMatrix.hxx"
00032 #include "Fundamental.hxx"
00033 #include "Spectrum.hxx"
00034 #include "SpectralPeakArray.hxx"
00035
00036 using std::iterator;
00037
00038 namespace CLAM
00039 {
00040
00041 SDIFIn::SDIFIn():
00042 mOutput("Output",this),
00043 mSDIFReader(),
00044 mPrevIndexArray(0)
00045 {
00046 mLastCenterTime=-1;
00047
00048 Configure(SDIFInConfig());
00049 }
00050
00051 SDIFIn::SDIFIn(const SDIFInConfig& c):
00052 mOutput("Output",this),
00053 mSDIFReader(c),
00054 mPrevIndexArray(0)
00055 {
00056 mLastCenterTime=-1;
00057
00058 Configure(c);
00059 }
00060
00061 SDIFIn::~SDIFIn()
00062 {
00063 }
00064
00065 bool SDIFIn::ConcreteConfigure(const ProcessingConfig& c)
00066 {
00067 CopyAsConcreteConfig(mConfig, c);
00068
00069 mSDIFReader.Configure(mConfig);
00070
00071 return true;
00072 }
00073
00074 bool SDIFIn::ConcreteStart()
00075 {
00076 return true;
00077 }
00078
00079 bool SDIFIn::ConcreteStop()
00080 {
00081 return true;
00082 }
00083
00084 const ProcessingConfig& SDIFIn::GetConfig() const
00085 {
00086 return mConfig;
00087 }
00088
00089 bool SDIFIn::LoadSDIFDataIntoSegment( CLAM::Segment& segment )
00090 {
00091
00092
00093
00094
00095
00096
00097
00098
00099 Frame aFrame;
00100 aFrame.AddSpectralPeakArray();
00101 aFrame.AddResidualSpec();
00102 aFrame.AddFundamental();
00103 aFrame.UpdateData();
00104 TTime frameCenterTime;
00105
00106
00107
00108
00109
00110
00111 bool response = mSDIFReader.ReadFrame( aFrame.GetFundamental(), aFrame.GetSpectralPeakArray(),
00112 aFrame.GetResidualSpec(), frameCenterTime );
00113
00114 if (response == true)
00115 {
00116 aFrame.SetCenterTime(frameCenterTime);
00117
00118 if ( !segment.HasSamplingRate() )
00119 {
00120 segment.AddSamplingRate();
00121 segment.UpdateData();
00122 }
00123 segment.SetSamplingRate(mSDIFReader.GetSamplingRate());
00124
00125 segment.AddFrame(aFrame);
00126 }
00127
00128 return response;
00129 }
00130
00131 bool SDIFIn::Do( CLAM::Segment& segment )
00132 {
00133
00134
00135
00136 return LoadSDIFDataIntoSegment( segment );
00137
00138 return true;
00139 }
00140
00141 bool SDIFIn::Do(void)
00142 {
00143 bool result = LoadSDIFDataIntoSegment( mOutput.GetData() );
00144
00145 return result;
00146 }
00147
00148 }
00149