fileloader.h
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
00026 #ifndef __FIREVISION_CAMS_FILELOADER_H_
00027 #define __FIREVISION_CAMS_FILELOADER_H_
00028
00029 #include <cams/camera.h>
00030 #include <dirent.h>
00031
00032 namespace firevision {
00033 #if 0
00034 }
00035 #endif
00036
00037 class CameraArgumentParser;
00038
00039 class FileLoader : public Camera
00040 {
00041 #if defined(__GLIBC__) || defined(__FreeBSD__)
00042 friend int file_select(const struct dirent*);
00043 #else
00044 friend int file_select(struct dirent*);
00045 #endif
00046
00047 public:
00048
00049 FileLoader(const char *filename);
00050 FileLoader(colorspace_t cspace, const char* filename, unsigned int width, unsigned int height);
00051 FileLoader(const CameraArgumentParser *cap);
00052 ~FileLoader();
00053
00054 virtual void open();
00055 virtual void start();
00056 virtual void stop();
00057 virtual void close();
00058 virtual void capture();
00059 virtual void flush();
00060
00061 virtual bool ready();
00062
00063 virtual void print_info();
00064
00065 virtual unsigned char * buffer();
00066 virtual unsigned int buffer_size();
00067 virtual void dispose_buffer();
00068
00069 virtual unsigned int pixel_width();
00070 virtual unsigned int pixel_height();
00071 virtual colorspace_t colorspace();
00072
00073 virtual void set_image_number(unsigned int n);
00074
00075 void set_colorspace(colorspace_t c);
00076 void set_pixel_width(unsigned int w);
00077 void set_pixel_height(unsigned int h);
00078
00079 private:
00080 void read_file();
00081
00082 bool started;
00083 bool opened;
00084 unsigned char* file_buffer;
00085 int _buffer_size;
00086 unsigned int width;
00087 unsigned int height;
00088 colorspace_t cspace;
00089 char *filename;
00090 char *dirname;
00091 static char *extension;
00092 int num_files;
00093 int cur_file;
00094 struct dirent **file_list;
00095 };
00096
00097 }
00098
00099 #endif