Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

VideoDeviceLinux.h

Go to the documentation of this file.
00001 #ifndef VIDEO_DEVICE_LINUX_HPP 00002 #define VIDEO_DEVICE_LINUX_HPP 00003 00004 #include <qglobal.h> 00005 00006 #include <qsocketnotifier.h> 00007 #include <qtimer.h> 00008 00009 #include "videodev.h" 00010 #include <sys/ioctl.h> 00011 00012 #include "VideoDevice.h" 00013 #include "VideoDeviceOptions.h" 00014 #include "VideoSettingsDlg.h" 00015 00016 class CVideoDeviceInput; 00017 class CVideoAudioInput; 00018 00019 class CVideoDeviceLinux: public CVideoDevice 00020 { 00021 friend class CVideoDeviceInput; 00022 friend class CVideoAudioInput; 00023 Q_OBJECT 00024 private: 00025 int m_CamFD; 00026 bool m_HasFramerate; 00027 int m_Framerate; 00028 bool m_StopCapture; 00029 QWaitCondition m_CaptureFinished; 00030 00031 QSize m_MaxSize, m_MinSize; 00032 QSize m_RequestedSize; 00033 00034 uchar *vid_io_buffer; // The buffer used for I/O; this can be mmap()ed or malloc()ed 00035 QArray<int> vid_io_offsets; //, rgb_vid_offsets, yuv_vid_offsets; 00036 int vid_io_buffer_size, vid_io_image_size; 00037 int m_Palette; 00038 00039 QVector<CVideoDeviceInput> m_VideoInputs; 00040 int m_CurrentVideoInput; 00041 QVector<CVideoDeviceTuner> m_Tuners; 00042 int m_CurrentTuner; 00043 QVector<CVideoAudioInput> m_AudioInputs; 00044 int m_CurrentAudioInput; 00045 00046 CVideoDeviceOptions *m_pSettings; 00047 CVideoSettingsDlg *pSettingsDlg; 00048 00049 struct video_picture m_VPic; 00050 struct video_mbuf m_VMBuf; 00051 struct video_mmap m_VMMap; 00052 00053 bool TryPalette(int palette, int depth); 00054 void SetPalette(); 00055 00056 virtual void CreateImagesRGB(); 00057 virtual void DeleteImagesRGB(); 00058 virtual void CreateImagesYUV(); 00059 virtual void DeleteImagesYUV(); 00060 00061 private slots: 00062 void VideoInputSwitched(int); 00063 void NewFrequency(float); 00064 00065 protected: 00066 virtual bool Init(); 00067 virtual void Exit(); 00068 00069 virtual bool StartCapture(); 00070 virtual void StopCapture(); 00071 00072 virtual void run(); 00073 00074 public: 00075 CVideoDeviceLinux(const QString &node_name); 00076 ~CVideoDeviceLinux(); 00077 00078 void SetConfiguration(const QDomNode &); 00079 void GetConfiguration(QDomNode &) const; 00080 00081 virtual long GetDescriptor() const; 00082 00083 virtual void Mute(bool on) const; 00084 00085 /* These are for Linux only */ 00086 QSize GetMinSize() const; 00087 QSize GetMaxSize() const; 00088 void SetSize(const QSize &new_size); 00089 bool HasFramerate() const; 00090 int GetFramerate() const; 00091 void SetFramerate(int fps); 00092 00093 int GetBrightness() const; 00094 bool SetBrightness(int val); 00095 int GetContrast() const; 00096 bool SetContrast(int val); 00097 int GetHue() const; 00098 bool SetHue(int val); 00099 int GetColour() const; 00100 bool SetColour(int val); 00101 int GetWhiteness() const; 00102 bool SetWhiteness(int val); 00103 00104 virtual int GetNumberOfInputs() const; 00105 virtual void SetInput(int); 00106 virtual int GetInput() const; 00107 virtual int GetNumberOfTuners() const; 00108 virtual void SetTuner(int); 00109 virtual int GetTuner() const; 00110 00111 CVideoDeviceInput *GetVideoInput(int number = -1) const; 00112 CVideoDeviceTuner *GetVideoTuner(int number = -1) const; 00113 00114 public: /* overloaded slots */ 00115 virtual void ShowDisplayDialog(); 00116 virtual void ShowFormatDialog(); 00117 virtual void ShowSourceDialog(); 00118 }; 00119 00120 #endif

Generated on Wed Dec 13 23:38:46 2006 for CamStream by doxygen 1.3.7