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