123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #ifndef _HPP_OBJMOVIE
- #define _HPP_OBJMOVIE
- #include <sys/stat.h>
- #include <fstream>
- #include <string>
- #include <vector>
- #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<MovieFilter2d*> FilterList;
- FILE *fw;
- bool SwitchMaster;
- fpos_t FilePos_FirstFrame, CurFramePos;
- int FrameNumber;
- int NFrames;
- vector<fpos_t> 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
|