00001 #ifndef __VU_SPHERIC_LIGHTFIELD_FOURIER_H__
00002 #define __VU_SPHERIC_LIGHTFIELD_FOURIER_H__
00003
00004 #include "vuSphericLightfieldBasicConverter.h"
00005 #include <fftw.h>
00006
00007 template <int SI, class TI, int SO, class TO>
00008 class vuSphericLightfieldFourier : public vuSphericLightfieldBasicConverter<SI,TI,SO,TO>
00009 {
00010 public:
00011
00012 vuSphericLightfieldFourier();
00013
00014 virtual ~vuSphericLightfieldFourier();
00015
00016 void _ensurePlan(dword width, dword height);
00017
00019 void _convert(vuSphericView<SI,TI> *in, vuSphericView<SO,TO> *out);
00020
00021 protected:
00022 fftwnd_plan m_Plan;
00023 fftwnd_plan m_PlanForward;
00024 bool m_PlanExists;
00025
00026 };
00027
00028
00029 template class vuSphericLightfieldFourier<1,float,1,float>;
00030 template class vuSphericLightfieldFourier<1,float,2,float>;
00031 template class vuSphericLightfieldFourier<2,float,2,float>;
00032 template class vuSphericLightfieldFourier<1,byte,2,float>;
00033
00034 typedef vuSphericLightfieldFourier<1,float,1,float> vuSphLFFourier1F1F;
00035 typedef vuSphericLightfieldFourier<1,float,2,float> vuSphLFFourier1F2F;
00036 typedef vuSphericLightfieldFourier<2,float,2,float> vuSphLFFourier2F2F;
00037 typedef vuSphericLightfieldFourier<1,byte,2,float> vuSphLFFourier1B2F;
00038
00039
00040 class vuSphericLightfieldFourierFactory
00041 {
00042 public:
00043 static vuBasicLightfieldConverter *getConverter(vuString &name);
00044 };
00045
00046
00047 #endif