FrameDescriptors.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
00023
00024
00025 #include "ProcessingData.hxx"
00026 #include "FrameDescriptors.hxx"
00027 #include "Frame.hxx"
00028
00029
00030 namespace CLAM{
00031
00032 FrameDescriptors::FrameDescriptors(Frame* pFrame): Descriptor(eNumAttr)
00033 {
00034 MandatoryInit();
00035 mpFrame=pFrame;
00036 }
00037
00038 FrameDescriptors::FrameDescriptors(TData initVal): Descriptor(eNumAttr)
00039 {
00040 MandatoryInit();
00041 AddAll();
00042 UpdateData();
00043 SetSpectralPeakD(SpectralPeakDescriptors(initVal));
00044 SetSpectrumD(SpectralDescriptors(initVal));
00045 SetResidualSpecD(SpectralDescriptors(initVal));
00046 SetSinusoidalSpecD(SpectralDescriptors(initVal));
00047 SetAudioFrameD(AudioDescriptors(initVal));
00048 SetSinusoidalAudioFrameD(AudioDescriptors(initVal));
00049 SetResidualAudioFrameD(AudioDescriptors(initVal));
00050 SetSynthAudioFrameD(AudioDescriptors(initVal));
00051 }
00052
00053 void FrameDescriptors::DefaultInit() {
00054 mpFrame=0;
00055 }
00056
00057 void FrameDescriptors::CopyInit(const FrameDescriptors & copied) {
00058 mpFrame=copied.mpFrame;
00059 }
00060
00061 const Frame* FrameDescriptors::GetpFrame() const {
00062 return mpFrame;
00063 }
00064
00065 void FrameDescriptors::SetpFrame(const Frame* pFrame){
00066 mpFrame=pFrame;
00067
00068 if(mpFrame->HasSpectrum())
00069 AddSpectrumD();
00070 if(mpFrame->HasSpectralPeakArray())
00071 AddSpectralPeakD();
00072 if(mpFrame->HasResidualSpec())
00073 AddResidualSpecD();
00074 if(mpFrame->HasSinusoidalSpec())
00075 AddSinusoidalSpecD();
00076 if(mpFrame->HasAudioFrame())
00077 AddAudioFrameD();
00078 if(mpFrame->HasSinusoidalAudioFrame())
00079 AddSinusoidalAudioFrameD();
00080 if(mpFrame->HasResidualAudioFrame())
00081 AddResidualAudioFrameD();
00082 if(mpFrame->HasSynthAudioFrame())
00083 AddSynthAudioFrameD();
00084 UpdateData();
00085
00086 if(mpFrame->HasSpectrum())
00087 GetSpectrumD().SetpSpectrum(&mpFrame->GetSpectrum());
00088 if(mpFrame->HasSpectralPeakArray())
00089 GetSpectralPeakD().SetpSpectralPeakArray(&mpFrame->GetSpectralPeakArray());
00090 if(mpFrame->HasResidualSpec())
00091 GetResidualSpecD().SetpSpectrum(&mpFrame->GetResidualSpec());
00092 if(mpFrame->HasSinusoidalSpec())
00093 GetSinusoidalSpecD().SetpSpectrum(&mpFrame->GetSinusoidalSpec());
00094 if(mpFrame->HasAudioFrame())
00095 GetAudioFrameD().SetpAudio(&mpFrame->GetAudioFrame());
00096 if(mpFrame->HasSinusoidalAudioFrame())
00097 GetSinusoidalAudioFrameD().SetpAudio(&mpFrame->GetSinusoidalAudioFrame());
00098 if(mpFrame->HasResidualAudioFrame())
00099 GetResidualAudioFrameD().SetpAudio(&mpFrame->GetResidualAudioFrame());
00100 if(mpFrame->HasSynthAudioFrame())
00101 GetSynthAudioFrameD().SetpAudio(&mpFrame->GetSynthAudioFrame());
00102
00103 }
00104
00105 void FrameDescriptors::Compute()
00106 {
00107
00108
00109 ConcreteCompute();
00110 }
00111
00112
00113 void FrameDescriptors::ConcreteCompute()
00114 {
00115 if(mpFrame->HasSpectrum())
00116 GetSpectrumD().Compute();
00117 if(mpFrame->HasSpectralPeakArray())
00118 GetSpectralPeakD().Compute();
00119 if(mpFrame->HasResidualSpec())
00120 GetResidualSpecD().Compute();
00121 if(mpFrame->HasSinusoidalSpec())
00122 GetSinusoidalSpecD().Compute();
00123 if(mpFrame->HasAudioFrame())
00124 GetAudioFrameD().Compute();
00125 if(mpFrame->HasSinusoidalAudioFrame())
00126 GetSinusoidalAudioFrameD().Compute();
00127 if(mpFrame->HasResidualAudioFrame())
00128 GetResidualAudioFrameD().Compute();
00129 if(mpFrame->HasSynthAudioFrame())
00130 GetSynthAudioFrameD().Compute();
00131 if(HasCenterTime())
00132 SetCenterTime(mpFrame->GetCenterTime());
00133
00134
00135 }
00136
00137 FrameDescriptors operator * (const FrameDescriptors& a,const FrameDescriptors& b)
00138 {
00139 FrameDescriptors tmpD;
00140 if(a.HasSpectralPeakD() && b.HasSpectralPeakD())
00141 {
00142 tmpD.AddSpectralPeakD();
00143 tmpD.UpdateData();
00144 tmpD.SetSpectralPeakD(a.GetSpectralPeakD()*b.GetSpectralPeakD());
00145 }
00146 if(a.HasSpectrumD() && b.HasSpectrumD())
00147 {
00148 tmpD.AddSpectrumD();
00149 tmpD.UpdateData();
00150 tmpD.SetSpectrumD(a.GetSpectrumD()*b.GetSpectrumD());
00151 }
00152 if(a.HasResidualSpecD() && b.HasResidualSpecD() )
00153 {
00154 tmpD.AddResidualSpecD();
00155 tmpD.UpdateData();
00156 tmpD.SetResidualSpecD(a.GetResidualSpecD()*b.GetResidualSpecD());
00157 }
00158 if(a.HasSinusoidalSpecD() && b.HasSinusoidalSpecD())
00159 {
00160 tmpD.AddSinusoidalSpecD();
00161 tmpD.UpdateData();
00162 tmpD.SetSinusoidalSpecD(a.GetSinusoidalSpecD()*b.GetSinusoidalSpecD());
00163 }
00164 if(a.HasAudioFrameD() && b.HasAudioFrameD() )
00165 {
00166 tmpD.AddAudioFrameD();
00167 tmpD.UpdateData();
00168 tmpD.SetAudioFrameD(a.GetAudioFrameD()*b.GetAudioFrameD());
00169 }
00170 if(a.HasSinusoidalAudioFrameD() && b.HasSinusoidalAudioFrameD() )
00171 {
00172 tmpD.AddSinusoidalAudioFrameD();
00173 tmpD.UpdateData();
00174 tmpD.SetSinusoidalAudioFrameD(a.GetSinusoidalAudioFrameD()*b.GetSinusoidalAudioFrameD());
00175 }
00176 if(a.HasResidualAudioFrameD() && b.HasResidualAudioFrameD() )
00177 {
00178 tmpD.AddResidualAudioFrameD();
00179 tmpD.UpdateData();
00180 tmpD.SetResidualAudioFrameD(a.GetResidualAudioFrameD()*b.GetResidualAudioFrameD());
00181 }
00182 if(a.HasSynthAudioFrameD() && b.HasSynthAudioFrameD() )
00183 {
00184 tmpD.AddSynthAudioFrameD();
00185 tmpD.UpdateData();
00186 tmpD.SetSynthAudioFrameD(a.GetSynthAudioFrameD()*b.GetSynthAudioFrameD());
00187 }
00188
00189 return tmpD;
00190 }
00191
00192
00193 FrameDescriptors operator + (const FrameDescriptors& a,const FrameDescriptors& b)
00194 {
00195 FrameDescriptors tmpD;
00196 if(a.HasSpectralPeakD() && b.HasSpectralPeakD())
00197 {
00198 tmpD.AddSpectralPeakD();
00199 tmpD.UpdateData();
00200 tmpD.SetSpectralPeakD(a.GetSpectralPeakD()+b.GetSpectralPeakD());
00201 }
00202 if(a.HasSpectrumD() && b.HasSpectrumD())
00203 {
00204 tmpD.AddSpectrumD();
00205 tmpD.UpdateData();
00206 tmpD.SetSpectrumD(a.GetSpectrumD()+b.GetSpectrumD());
00207 }
00208 if(a.HasResidualSpecD() && b.HasResidualSpecD() )
00209 {
00210 tmpD.AddResidualSpecD();
00211 tmpD.UpdateData();
00212 tmpD.SetResidualSpecD(a.GetResidualSpecD()+b.GetResidualSpecD());
00213 }
00214 if(a.HasSinusoidalSpecD() && b.HasSinusoidalSpecD())
00215 {
00216 tmpD.AddSinusoidalSpecD();
00217 tmpD.UpdateData();
00218 tmpD.SetSinusoidalSpecD(a.GetSinusoidalSpecD()+b.GetSinusoidalSpecD());
00219 }
00220 if(a.HasAudioFrameD() && b.HasAudioFrameD() )
00221 {
00222 tmpD.AddAudioFrameD();
00223 tmpD.UpdateData();
00224 tmpD.SetAudioFrameD(a.GetAudioFrameD()+b.GetAudioFrameD());
00225 }
00226 if(a.HasSinusoidalAudioFrameD() && b.HasSinusoidalAudioFrameD() )
00227 {
00228 tmpD.AddSinusoidalAudioFrameD();
00229 tmpD.UpdateData();
00230 tmpD.SetSinusoidalAudioFrameD(a.GetSinusoidalAudioFrameD()+b.GetSinusoidalAudioFrameD());
00231 }
00232 if(a.HasResidualAudioFrameD() && b.HasResidualAudioFrameD() )
00233 {
00234 tmpD.AddResidualAudioFrameD();
00235 tmpD.UpdateData();
00236 tmpD.SetResidualAudioFrameD(a.GetResidualAudioFrameD()+b.GetResidualAudioFrameD());
00237 }
00238 if(a.HasSynthAudioFrameD() && b.HasSynthAudioFrameD() )
00239 {
00240 tmpD.AddSynthAudioFrameD();
00241 tmpD.UpdateData();
00242 tmpD.SetSynthAudioFrameD(a.GetSynthAudioFrameD()+b.GetSynthAudioFrameD());
00243 }
00244
00245 return tmpD;
00246 }
00247
00248
00249 FrameDescriptors operator * (const FrameDescriptors& a,TData mult)
00250 {
00251 FrameDescriptors tmpD(a);
00252 if(a.HasSpectralPeakD())
00253 {
00254 tmpD.SetSpectralPeakD(a.GetSpectralPeakD()*mult);
00255 }
00256 if(a.HasSpectrumD())
00257 {
00258 tmpD.SetSpectrumD(a.GetSpectrumD()*mult);
00259 }
00260 if(a.HasResidualSpecD())
00261 {
00262 tmpD.SetResidualSpecD(a.GetResidualSpecD()*mult);
00263 }
00264 if(a.HasSinusoidalSpecD())
00265 {
00266 tmpD.SetSinusoidalSpecD(a.GetSinusoidalSpecD()*mult);
00267 }
00268 if(a.HasAudioFrameD())
00269 {
00270 tmpD.SetAudioFrameD(a.GetAudioFrameD()*mult);
00271 }
00272 if(a.HasSinusoidalAudioFrameD())
00273 {
00274 tmpD.SetSinusoidalAudioFrameD(a.GetSinusoidalAudioFrameD()*mult);
00275 }
00276 if(a.HasResidualAudioFrameD())
00277 {
00278 tmpD.SetResidualAudioFrameD(a.GetResidualAudioFrameD()*mult);
00279 }
00280 if(a.HasSynthAudioFrameD())
00281 {
00282 tmpD.SetSynthAudioFrameD(a.GetSynthAudioFrameD()*mult);
00283 }
00284
00285 return tmpD;
00286
00287 }
00288
00289 FrameDescriptors operator * (TData mult,const FrameDescriptors& a)
00290 {
00291 return a*mult;
00292 }
00293
00294 FrameDescriptors operator - (const FrameDescriptors& a,const FrameDescriptors& b)
00295 {
00296 return a+((-1.0)*b);
00297 }
00298 FrameDescriptors operator / (const FrameDescriptors& a,TData div)
00299 {
00300 return a*(1/div);
00301 }
00302
00303
00304 }
00305