#ifndef _HPP_OBJMOVIE #define _HPP_OBJMOVIE #include #include #include #include #include "gslsingleton.h" using namespace std; /////////InputObjects/////////////////////////////////////////////////// // aus mindvideo.h // ToDo: mit idlmovierecorder gemeinsame Bibliothek verwenden // (ohne code-Duplikationen) typedef struct _mindfileheader { char finfo[12]; // "MindVideo" + \0 char version[5]; // "0.05" + \0 int width; int height; } mindfileheader; typedef struct _mindframeheader { char info[12]; } mindframeheader; typedef struct _MovieFilterHeader { int width, height, wshift, hshift, outputwidth, outputheight; } MovieFilterHeader; class MovieFilter2d { int FrameSize; public: MovieFilterHeader Header; float *LastShiftedFrame; //!< pointer to shifted bitmap data float *LastFrame; //!< pointer to bitmap data MovieFilter2d(); MovieFilter2d(FILE *fw); ~MovieFilter2d(); bool LoadFromFile(FILE *fw); bool LoadFilterFrame(FILE *fw); int GetFrameSize(); float* GetFramePointer(); float* GetShiftedFramePointer(); bool GetMinMaxValue(float &MinValue, float &MaxValue); int GetOutputWidth(); int GetOutputHeight(); void SetFrameShift(float x, float y); }; /*! \brief Klasse zum Einlesen eines MovieMetaFiles * */ class MovieMetaFile { protected: string MovieMetaFileName; // directory and filename public: MovieMetaFile(const char* FileName="/tmp/gauss.meta.xml"); ~MovieMetaFile(); bool Load(); bool Loaded; int Save(); void Print(); int NXParas, NYParas; string MovieFileName; }; // forward declaration class input; /*! \brief Klasse zum Einlesen eines mit CrystalSpace oder IDL erzeugten Movie-Files * */ class ObjMovie { protected: string MovieFileName; // directory and filename mindfileheader MHeader; mindframeheader MFrameHeader; int NFilters; vector FilterList; FILE *fw; bool SwitchMaster; fpos_t FilePos_FirstFrame, CurFramePos; int FrameNumber; int NFrames; vector FrameIndex; input* SwitchMasterObj; gsl_rng* gslr; public: ObjMovie(); ObjMovie(const char* FileName); ~ObjMovie(); int LoadMovieFile(const char* _FileName); int InitializeFrameIndex(); float* GetFramePointer(int FilterNr); float* GetShiftedFramePointer(int FilterNr); int GetFrameSize(int FilterNr); int GetOutputWidth(int FilterNr); int GetOutputHeight(int FilterNr); bool GetSwitchMaster(); input* GetSwitchMaster(input*); void ResetSwitchMaster(); int NextFrame(); int GetFrameNumber(); int NextRandomFrame(); int GotoFrameNr(int _FrameNr); int SetFrameShift(float RelXShift, float RelYShift); int SetRandomShift(); int GetNFrames(); int GetNFilters(); float GetMinValue(int FilterNr); }; std::string GetDefaultMovieDir(); ObjMovie* LoadObjMovie(const string& FileName, int & Width, int & Height, int & NFilters, int & NFrames, string MovieDir=""); #endif // _HPP_OBJMOVIE