UvcInterface.h
00001 #include <linux/types.h>
00002 #include <linux/videodev2.h>
00003 #include <string.h>
00004
00005 class UvcInterface;
00006
00007 #ifndef UVCINTERFACE_H_
00008 #define UVCINTERFACE_H_
00009
00010 class UvcInterface
00011 {
00012 public:
00013 UvcInterface(char const *sDevice,int aWidth=320,int aHeight=240):device(sDevice),frame(0),frameSize(0),fd(-1),width(aWidth),height(aHeight){buffer[0]=0;buffer[1]=0;}
00014 ~UvcInterface(void) {device=0;Close();}
00015
00016 int Open(void);
00017 int Close(void);
00018 int Read(void);
00019
00020 int GetWidth(void) const;
00021 int GetHeight(void) const;
00022
00023 int GetFrameSize(void) const {return frameSize;}
00024 void CopyFrame(unsigned char *dest) const {memcpy(dest,frame,frameSize);}
00025
00026 bool IsOpen(void) const {return fd!=-1;}
00027
00028 private:
00029 char const *device;
00030
00031 unsigned char *frame;
00032 int frameSize;
00033
00034 unsigned char *buffer[2];
00035 int length[2];
00036
00037 int fd;
00038
00039 v4l2_capability cap;
00040 v4l2_format fmt;
00041
00042 static const int dht_size;
00043 static const unsigned char dht_data[];
00044
00045 int width;
00046 int height;
00047 };
00048
00049 #endif