00001
00002 #ifndef MovieFile_h_
00003 #define MovieFile_h_
00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00005 #pragma interface
00006 #endif
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <vcl_string.h>
00019 #include <vxl_config.h>
00020
00021 #include <vil1/vil1_memory_image_of.h>
00022 #include <vil1/vil1_rgb.h>
00023
00024 struct MovieFileInterface;
00025
00026
00027 class MovieFile
00028 {
00029 public:
00030
00031
00032 MovieFile(char const * filename, int start = 0, int step = 1, int end = -1);
00033 ~MovieFile();
00034
00035 int GetLength();
00036 int GetSizeX(int frame_index = 0);
00037 int GetSizeY(int frame_index = 0);
00038 int GetBitsPixel();
00039
00040 int GetRealFrameIndex(int frame) { return start_ + frame * step_; }
00041 int GetNumFrames();
00042
00043 vil1_image GetImage(int frame_index);
00044
00045 bool HasFrame(int frame_index);
00046 void GetFrame(int frame_index, vil1_rgb<unsigned char> * frame);
00047 void GetFrame(int frame_index, vxl_byte* frame);
00048 void GetFrame(int frame_index, vil1_memory_image_of<vil1_rgb<unsigned char> >& frame);
00049 void GetFrame(int frame_index, vil1_memory_image_of<vxl_byte>& frame);
00050 void GetFrameRGB(int frame_index, vxl_byte* frame);
00051
00052 bool ok() { return qt != 0; }
00053
00054 protected:
00055 vcl_string filename_;
00056 int start_, step_, end_;
00057 MovieFileInterface* qt;
00058 vil1_memory_image_of<vil1_rgb<unsigned char> >* tmp_buf_;
00059
00060 int index(int);
00061 };
00062
00063 #endif // MovieFile_h_