File: VideoDeviceLinux.h

package info (click to toggle)
camstream 0.27%2Bdfsg-4
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 12,368 kB
  • ctags: 5,393
  • sloc: cpp: 17,031; sh: 8,154; asm: 455; ansic: 440; makefile: 343
file content (120 lines) | stat: -rw-r--r-- 2,925 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#ifndef VIDEO_DEVICE_LINUX_HPP
#define VIDEO_DEVICE_LINUX_HPP

#include <qglobal.h>

#include <qsocketnotifier.h>
#include <qtimer.h>

#include "videodev.h"
#include <sys/ioctl.h>

#include "VideoDevice.h"
#include "VideoDeviceOptions.h"
#include "VideoSettingsDlg.h"

class CVideoDeviceInput;
class CVideoAudioInput;

class CVideoDeviceLinux: public CVideoDevice
{
friend class CVideoDeviceInput;
friend class CVideoAudioInput;
   Q_OBJECT
private:
   int m_CamFD;
   bool m_HasFramerate;
   int m_Framerate;
   bool m_StopCapture;
   QWaitCondition m_CaptureFinished;

   QSize m_MaxSize, m_MinSize;
   QSize m_RequestedSize;

   uchar *vid_io_buffer;                // The buffer used for I/O; this can be mmap()ed or malloc()ed
   QArray<int> vid_io_offsets;          //, rgb_vid_offsets, yuv_vid_offsets;
   int vid_io_buffer_size, vid_io_image_size;
   int m_Palette;

   QVector<CVideoDeviceInput> m_VideoInputs;
   int m_CurrentVideoInput;
   QVector<CVideoDeviceTuner> m_Tuners;
   int m_CurrentTuner;
   QVector<CVideoAudioInput> m_AudioInputs;
   int m_CurrentAudioInput;

   CVideoDeviceOptions *m_pSettings;
   CVideoSettingsDlg *pSettingsDlg;

   struct video_picture m_VPic;
   struct video_mbuf m_VMBuf;
   struct video_mmap m_VMMap;

   bool TryPalette(int palette, int depth);
   void SetPalette();

   virtual void CreateImagesRGB();
   virtual void DeleteImagesRGB();
   virtual void CreateImagesYUV();
   virtual void DeleteImagesYUV();

private slots:
   void VideoInputSwitched(int);
   void NewFrequency(float);

protected:
   virtual bool Init();
   virtual void Exit();

   virtual bool StartCapture();
   virtual void StopCapture();

   virtual void run();

public:
   CVideoDeviceLinux(const QString &node_name);
   ~CVideoDeviceLinux();

   void SetConfiguration(const QDomNode &);
   void GetConfiguration(QDomNode &) const;

   virtual long GetDescriptor() const;

   virtual void Mute(bool on) const;

   /* These are for Linux only */
   QSize GetMinSize() const;
   QSize GetMaxSize() const;
   void SetSize(const QSize &new_size);
   bool HasFramerate() const;
   int GetFramerate() const;
   void SetFramerate(int fps);

   int GetBrightness() const;
   bool SetBrightness(int val);
   int GetContrast() const;
   bool SetContrast(int val);
   int GetHue() const;
   bool SetHue(int val);
   int GetColour() const;
   bool SetColour(int val);
   int GetWhiteness() const;
   bool SetWhiteness(int val);

   virtual int GetNumberOfInputs() const;
   virtual void SetInput(int);
   virtual int GetInput() const;
   virtual int GetNumberOfTuners() const;
   virtual void SetTuner(int);
   virtual int GetTuner() const;

   CVideoDeviceInput *GetVideoInput(int number = -1) const;
   CVideoDeviceTuner *GetVideoTuner(int number = -1) const;

public: /* overloaded slots */
   virtual void ShowDisplayDialog();
   virtual void ShowFormatDialog();
   virtual void ShowSourceDialog();
};

#endif