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