Visual Servoing Platform version 3.5.0
vp1394CMUGrabber.h
1/****************************************************************************
2 *
3 * ViSP, open source Visual Servoing Platform software.
4 * Copyright (C) 2005 - 2019 by Inria. All rights reserved.
5 *
6 * This software is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 * See the file LICENSE.txt at the root directory of this source
11 * distribution for additional information about the GNU GPL.
12 *
13 * For using ViSP with software that can not be combined with the GNU
14 * GPL, please contact Inria about acquiring a ViSP Professional
15 * Edition License.
16 *
17 * See http://visp.inria.fr for more information.
18 *
19 * This software was developed at:
20 * Inria Rennes - Bretagne Atlantique
21 * Campus Universitaire de Beaulieu
22 * 35042 Rennes Cedex
23 * France
24 *
25 * If you have questions regarding the use of this file, please contact
26 * Inria at visp@inria.fr
27 *
28 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
29 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
30 *
31 * Description:
32 * Firewire cameras video capture based on CMU 1394 Digital Camera SDK.
33 *
34 * Authors:
35 * Lucas Lopes Lemos FEMTO-ST, AS2M departement, Besancon
36 * Guillaume Laurent FEMTO-ST, AS2M departement, Besancon
37 * Fabien Spindler
38 *
39 *****************************************************************************/
40
41#ifndef vp1394CMUGrabber_h
42#define vp1394CMUGrabber_h
43
44#include <visp3/core/vpConfig.h>
45
46#ifdef VISP_HAVE_CMU1394
47
48// Include WinSock2.h before windows.h to ensure that winsock.h is not
49// included by windows.h since winsock.h and winsock2.h are incompatible
50#include <1394Camera.h> // CMU library
51#include <WinSock2.h>
52#include <windows.h>
53
54#include <visp3/core/vpFrameGrabber.h>
55#include <visp3/core/vpFrameGrabberException.h>
56#include <visp3/core/vpImage.h>
57#include <visp3/core/vpRGBa.h>
58
151class VISP_EXPORT vp1394CMUGrabber : public vpFrameGrabber
152{
153public:
157 typedef enum { YUV444, YUV422, YUV411, RGB8, MONO8, MONO16, UNKNOWN } vpColorCodingType;
158
159private:
161 C1394Camera *camera;
163 int index;
165 unsigned long _format;
167 unsigned long _mode;
169 unsigned long _fps;
171 bool _modeauto;
173 unsigned short _gain;
175 unsigned short _shutter;
177 vpColorCodingType _color;
178
179public:
180 // Constructor.
182 // Destructor.
183 virtual ~vp1394CMUGrabber();
184
185 // Acquire one frame in a greyscale image.
187
188 // Acquire one frame in a color image.
189 void acquire(vpImage<vpRGBa> &I);
190
191 // Stop the acquisition.
192 void close();
193
194 // Display information about the camera on the standard output.
195 void displayCameraDescription(int cam_id);
196
197 // Display camera model on the standard output. Call it after open the
198 // grabber.
199 void displayCameraModel();
200
201 // Get the video framerate
202 int getFramerate();
203
204 // Get the gain min and max values.
205 void getGainMinMax(unsigned short &min, unsigned short &max);
206
207 // Get the number of connected cameras.
208 int getNumberOfConnectedCameras() const;
209
210 // Get the shutter min and max values.
211 void getShutterMinMax(unsigned short &min, unsigned short &max);
212
215 {
217 if (_format == 0) {
218 switch (_mode) {
219 case 0:
221 break;
222 case 1:
224 break;
225 case 2:
227 break;
228 case 3:
230 break;
231 case 4:
233 break;
234 case 5:
236 break;
237 case 6:
239 break;
240 }
241 } else if (_format == 1) {
242 switch (_mode) {
243 case 0:
245 break;
246 case 1:
248 break;
249 case 2:
251 break;
252 case 3:
254 break;
255 case 4:
257 break;
258 case 5:
260 break;
261 case 6:
263 break;
264 case 7:
266 break;
267 }
268 } else if (_format == 2) {
269 switch (_mode) {
270 case 0:
272 break;
273 case 1:
275 break;
276 case 2:
278 break;
279 case 3:
281 break;
282 case 4:
284 break;
285 case 5:
287 break;
288 case 6:
290 break;
291 case 7:
293 break;
294 }
295 }
296
297 return color;
298 }
299
300 // Initialization of the grabber using a greyscale image.
302
303 // Initialization of the grabber using a color image.
304 void open(vpImage<vpRGBa> &I);
305
307 vp1394CMUGrabber &operator>>(vpImage<vpRGBa> &I);
308
309 // Select the camera on the bus. Call it before open the grabber.
310 void selectCamera(int cam_id);
311
312 // Enable auto gain
313 void setAutoGain();
314
315 // Enable auto shutter
316 void setAutoShutter();
317
318 // Set the gain and the shutter values. Call it before open the grabber
319 void setControl(unsigned short gain, unsigned short shutter);
320
321 // Set the frame rate. Call it before open the grabber.
322 void setFramerate(unsigned long fps);
323
324 // Set the shutter value. Call it before open the grabber
325 void setShutter(unsigned short shutter);
326
327 // Set the gain value. Call it before open the grabber
328 void setGain(unsigned short gain);
329
330 // Set the video format and mode. Call it before open the grabber.
331 void setVideoMode(unsigned long format, unsigned long mode);
332
333private:
334 void initCamera();
335};
336
337#endif
338#endif
Firewire cameras video capture based on CMU 1394 Digital Camera SDK.
vpColorCodingType getVideoColorCoding() const
Get the video color coding format.
Base class for all video devices. It is designed to provide a front end to video sources.
virtual void open(vpImage< unsigned char > &I)=0
virtual void acquire(vpImage< unsigned char > &I)=0
virtual void close()=0