33 mPrevIndexArray(0), isFileOpen(false)
41 mPrevIndexArray(0), isFileOpen(false)
63 bool SDIFFileReader::OpenFile()
74 catch ( ErrOpenFile& e )
76 std::cerr <<
"Inner exception thrown: File <" << mConfig.GetFileName().c_str() <<
"> could not be opened" << std::endl;
103 TTime& argFrameCenterTime)
105 if (!isFileOpen) OpenFile();
132 mpFile->Read(tmpSDIFFrame);
134 frameTimeTag = tmpSDIFFrame.
Time();
140 mLastCenterTime = frameTimeTag;
141 argFrameCenterTime = frameTimeTag;
146 else if (frameTimeTag != mLastCenterTime)
155 CopyFramesDataObjects( tmpSDIFFrame, argFundamental, argSpectralPeaks, argResidual );
175 if (tmpSDIFFrame.
Type()==
"1FQ0" && mConfig.GetEnableFundFreq())
180 else if(tmpSDIFFrame.
Type()==
"1STF" && mConfig.GetEnableResidual())
182 CLAM_ASSERT(pMatrix->
Type() ==
"ISTF",
"SDIFIn::Add ISTF Header in Matrix expected");
187 argResidual.AddAll();
192 mSamplingRate = pMatrix->
GetValue( 0, 0 );
194 argResidual.SetSpectralRange(pMatrix->
GetValue(0,0)*0.5);
201 CLAM_ASSERT(pMatrix->
Type() ==
"1STF",
"SDIFIn::Add 1STF Headerin Matrix expected");
203 Array<Complex>& complexBuffer=argResidual.GetComplexArray();
204 for (
int r=0;r<pMatrix->
Rows();r++)
207 complexBuffer[r] = tmpComplex;
211 else if(tmpSDIFFrame.
Type()==
"1TRC" && mConfig.GetEnablePeakArray())
215 argSpectralPeaks.AddAll();
217 SpectralPeakArray& tmpPeakArray = argSpectralPeaks;
221 tmpPeakArray.SetnPeaks(nElems);
222 tmpPeakArray.ResetIndices();
225 DataArray& pkfreqBuffer=tmpPeakArray.GetFreqBuffer();
226 DataArray& pkmagBuffer=tmpPeakArray.GetMagBuffer();
227 DataArray& pkPhaseBuffer=tmpPeakArray.GetPhaseBuffer();
228 DataArray& pkBinPosBuffer=tmpPeakArray.GetBinPosBuffer();
229 DataArray& pkBinWidthBuffer=tmpPeakArray.GetBinWidthBuffer();
230 IndexArray& pkIndexArray=tmpPeakArray.GetIndexArray();
231 if(!mConfig.GetRelativePeakIndices())
233 for (
int r=0;r<nElems;r++)
237 pkfreqBuffer[r]=pMatrix->
GetValue(r,1);
238 pkmagBuffer[r]=pMatrix->
GetValue(r,2);
239 pkPhaseBuffer[r]=pMatrix->
GetValue(r,3);
240 pkBinPosBuffer[r]=-1;
241 pkBinWidthBuffer[r]=-1;
247 IndexArray tmpIndexArray;
248 for (
int r=0;r<nElems;r++)
252 pkfreqBuffer[r]=pMatrix->
GetValue(r,1);
253 pkmagBuffer[r]=pMatrix->
GetValue(r,2);
254 pkPhaseBuffer[r]=pMatrix->
GetValue(r,3);
255 pkBinPosBuffer[r]=-1;
256 pkBinWidthBuffer[r]=-1;
257 if(mConfig.GetRelativePeakIndices())
262 tmpIndexArray.AddElem(tempIndex);
270 TIndex nPeaks = tmpIndexArray.Size();
272 TIndex currIndex,prevIndex;
273 bool bIndexFound=
false;
275 for (
int i=0;i<nPeaks;i++)
278 currIndex = tmpIndexArray[i];
280 for (
int j=0;j<nPrevPeaks;j++)
282 prevIndex = mPrevIndexArray[j];
283 if (prevIndex==currIndex)
290 if (!bIndexFound) pkIndexArray[i]=-1;
294 mPrevIndexArray = tmpIndexArray;
311 return mSamplingRate;
316 return mLastCenterTime;