source: flair-src/trunk/lib/FlairSensorActuator/src/unexported/V4LCamera_impl.h @ 352

Last change on this file since 352 was 352, checked in by Sanahuja Guillaume, 20 months ago

v4lcamera: use pimpl

File size: 2.8 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5/*!
6 * \file V4LCamera.h
7 * \brief Base class for V4l camera
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2014/07/17
10 * \version 4.0
11 */
12
13#ifndef V4LCAMERA_IMPL_H
14#define V4LCAMERA_IMPL_H
15
16#include "V4LCamera.h"
17#include <linux/videodev2.h>
18
19#define DEFAULT_V4L_BUFFERS 4
20
21namespace flair {
22  namespace core {
23    class Image;
24  }
25  namespace gui {
26    class DoubleSpinBox;
27    class CheckBox;
28    class Label;
29  }
30}
31
32
33/*! \class V4LCamera_impl
34*
35* \brief Base class for V4l camera
36*/
37class V4LCamera_impl {
38public:
39  /*!
40  * \brief Constructor
41  *
42  * Construct a Camera.
43        * It will be child of the FrameworkManager.
44  *
45  * \param name name
46  * \param camera_index camera index
47  * \param width width
48  * \param height height
49  * \param format image format
50  */
51  V4LCamera_impl(flair::sensor::V4LCamera *self,std::string name,
52            uint8_t camera_index, uint16_t width, uint16_t height,
53            flair::core::Image::Type::Format format);
54
55  /*!
56  * \brief Destructor
57  *
58  */
59  ~V4LCamera_impl();
60 
61  /*!
62  * \brief Run function
63  *
64  */
65  void Run(void);
66 
67  bool hasProblems;
68 
69  /*!
70  * \brief Set Gain
71  *
72  * \param value value between 0 and 1
73  */
74  void SetGain(float value);
75
76  /*!
77  * \brief Set Auto Gain
78  *
79  * \param value value
80  */
81  void SetAutoGain(bool value);
82
83  /*!
84  * \brief Set Exposure
85  *
86  * \param value value between 0 and 1
87  */
88  void SetExposure(float value);
89
90  /*!
91  * \brief Set Auto Exposure
92  *
93  * \param value value
94  */
95  void SetAutoExposure(bool value);
96
97  /*!
98  * \brief Set Brightness
99  *
100  * \param value value between 0 and 1
101  */
102  void SetBrightness(float value);
103
104  /*!
105  * \brief Set Saturation
106  *
107  * \param value value between 0 and 1
108  */
109  void SetSaturation(float value);
110
111  /*!
112  * \brief Set Hue
113  *
114  * \param value value between 0 and 1
115  */
116  void SetHue(float value);
117
118  /*!
119  * \brief Set Contrast
120  *
121  * \param value value between 0 and 1
122  */
123  void SetContrast(float value);
124 
125private:
126 
127  flair::sensor::V4LCamera *self;
128  flair::gui::Tab *sensor_tab;
129  flair::gui::DoubleSpinBox *bright, *exposure, *gain, *contrast, *hue, *sharpness,*sat;
130  flair::gui::CheckBox *autogain, *awb, *autoexposure;
131  flair::gui::Label *fps;
132 
133  int device;
134 
135  void* buffers[DEFAULT_V4L_BUFFERS];
136  int nbBuffers;
137  char *imageData;
138  bool useMemoryUsrPtr;
139 
140  int Init(int width, int height,unsigned long colorspace);
141  int xioctl( int fd, int request, void *arg);
142  void SetProperty(int property,float value);
143  float GetProperty(int property);
144  int GrabFrame(void);
145  int AllocV4LBuffers(void);
146  int AllocUserBuffers(void);
147  int QueueBuffer(int index);
148  int QueueBuffer(struct v4l2_buffer *buf);
149  struct v4l2_buffer dQueuedBuffer;
150};
151
152#endif // V4LCAMERA_IMPL_H
Note: See TracBrowser for help on using the repository browser.