My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
FrameGrabber.h
1 #ifndef GCP_GRABBER_FRAMEGRABBER_H
2 #define GCP_GRABBER_FRAMEGRABBER_H
3 
11 #include <string>
12 #include <vector>
13 
14 //#define V4L2
15 
16 #if HAVE_VIDEO
17 
18 #include <linux/types.h>
19 #include <linux/videodev.h>
20 
21 #ifdef V4L2
22 #include <linux/videodev2.h>
23 #endif
24 
25 #endif
26 
27 namespace gcp {
28  namespace grabber {
29 
30  class FrameGrabber {
31  public:
32 
33  enum Standard {
34  STAND_UNKNOWN = 0x0,
35  STAND_NTSC = 0x1,
36  STAND_PAL = 0x2,
37  STAND_SECAM = 0x4,
38  };
39 
43  FrameGrabber(FrameGrabber::Standard stand=STAND_PAL);
44 
48  virtual ~FrameGrabber();
49 
50  void setDeviceFileName(std::string devFileName);
51 
52  void queryProperties();
53  void printProperties();
54 
55  void queryCapabilities();
56  void printCapabilities();
57 
58  void queryWindow();
59  void printWindow();
60 
61  void setStandard(Standard stand);
62 
63  void setChannel(int channel = defaultChannel_);
64  int queryChannel();
65  void printChannel();
66 
67  void setImageSize(int width = defaultWidth_,
68  int height = defaultHeight_);
69 
70  void getImage(std::vector<char> &theImage);
71 
72  void queryImageBuffer();
73  void printImageBuffer();
74 
75  void queryPicture();
76  void printPicture();
77 
78  void setDepth(int depth=defaultPixelDepth_);
79  void setBrightness(unsigned short brightness = defaultBrightness_);
80  void setContrast(unsigned short contrast = defaultContrast_);
81 
82  void createCaptureBuffer();
83 
84  private:
85 
86  static std::string defaultDevFileName_;
87  static const unsigned short defaultWidth_ = 768;
88  static const unsigned short defaultHeight_ = 480;
89  static const int defaultPixelDepth_ = 8;
90  static const unsigned short defaultBrightness_ = 32768;
91  static const unsigned short defaultContrast_ = 27648;
92  static const unsigned short defaultChannel_ = 1;
93 
94  int fd_;
95  int width_;
96  int height_;
97  void* imageBuffer_;
98  std::vector<void*> captureBuffers_;
99  unsigned bufLen_;
100  int channel_;
101 
102  std::string devFileName_;
103 
104 #if HAVE_VIDEO
105 #ifndef V4L2
106  struct video_capability vc_;
107  struct video_channel cp_;
108  struct video_picture vp_;
109  struct video_window vw_;
110  struct video_mbuf vm_;
111  struct video_mmap vb_;
112 #endif
113 #endif
114 
115  void openFrameGrabber(std::string devFileName);
116  void initialize(Standard stand);
117  unsigned getStandard(FrameGrabber::Standard stand);
118 
119  void setWindow(unsigned short width = defaultWidth_,
120  unsigned short height = defaultHeight_);
121 
122  //------------------------------------------------------------
123  // Private methods for handling mmap buffers
124  //------------------------------------------------------------
125 
126  void initializeCaptureBuffer();
127  void* createMmapBuffer(unsigned& bufLen);
128  void createMmapBuffers(std::vector<void*>& buffers, unsigned& bufLen);
129  void unmapCaptureBuffer();
130 
131  //------------------------------------------------------------
132  // Private methods for capturing a frame
133  //------------------------------------------------------------
134 
135  void startCapture();
136  unsigned syncFrame();
137  void stopCapture();
138 
139  //------------------------------------------------------------
140  // Utility method for issuing ioctl commands
141  //------------------------------------------------------------
142 
143  void ioctlThrow(int request, void* argp, std::string message);
144  void waitForDevice();
145 
146  }; // End class FrameGrabber
147 
148  } // End namespace grabber
149 }; // End namespace gcp
150 
151 #endif // End #ifndef GCP_GRABBER_FRAMEGRABBER_H
void queryWindow()
Definition: FrameGrabber.cc:531
int queryChannel()
Definition: FrameGrabber.cc:565
void setBrightness(unsigned short brightness=defaultBrightness_)
Definition: FrameGrabber.cc:674
void createCaptureBuffer()
Definition: FrameGrabber.cc:237
void setChannel(int channel=defaultChannel_)
Definition: FrameGrabber.cc:201
FrameGrabber()
Definition: frameshit.cc:44
void setStandard(Standard stand)
Definition: FrameGrabber.cc:179
virtual ~FrameGrabber()
Definition: FrameGrabber.cc:44
void setImageSize(int width=defaultWidth_, int height=defaultHeight_)
Definition: FrameGrabber.cc:440
void queryCapabilities()
Definition: FrameGrabber.cc:452
void setContrast(unsigned short contrast=defaultContrast_)
Definition: FrameGrabber.cc:700
void setDeviceFileName(std::string devFileName)
Definition: FrameGrabber.cc:57
void queryPicture()
Definition: FrameGrabber.cc:506
Definition: FrameGrabber.h:30