My Project
CapturePluginDSCapture.h
Go to the documentation of this file.
1 /*
2  * This file is part of ALVAR, A Library for Virtual and Augmented Reality.
3  *
4  * Copyright 2007-2012 VTT Technical Research Centre of Finland
5  *
6  * Contact: VTT Augmented Reality Team <alvar.info@vtt.fi>
7  * <http://www.vtt.fi/multimedia/alvar.html>
8  *
9  * ALVAR is free software; you can redistribute it and/or modify it under the
10  * terms of the GNU Lesser General Public License as published by the Free
11  * Software Foundation; either version 2.1 of the License, or (at your option)
12  * any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
17  * for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with ALVAR; if not, see
21  * <http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>.
22  */
23 
24 #ifndef CAPTUREPLUGINDSCAPTURE_H
25 #define CAPTUREPLUGINDSCAPTURE_H
26 
36 #ifdef WIN32
37 # ifdef ALVAR_Capture_Plugin_DSCapture_BUILD
38 # define ALVAR_CAPTURE_PLUGIN_DSCAPTURE_EXPORT __declspec(dllexport)
39 # else
40 # define ALVAR_CAPTURE_PLUGIN_DSCAPTURE_EXPORT __declspec(dllimport)
41 # endif
42 #else
43 # define ALVAR_CAPTURE_PLUGIN_DSCAPTURE_EXPORT
44 #endif
45 
46 #include "Capture.h"
47 #include "CapturePlugin.h"
48 #include "dscapture.h"
49 
50 namespace alvar {
51 
55 namespace plugins {
56 
63 class ALVAR_CAPTURE_PLUGIN_DSCAPTURE_EXPORT CaptureDSCapture : public alvar::Capture
64 {
65  class VideoSampler : public IVideoCallback
66  {
67  public:
68  CaptureDSCapture *parent;
69  VideoSampler(CaptureDSCapture *_parent) : parent(_parent)
70  {
71  }
72  void
73  OnVideoSample(BYTE *pBuffer, DWORD dwDataLen, REFERENCE_TIME t_start)
74  {
75  parent->OnVideoSample(pBuffer, dwDataLen, t_start);
76  }
77  bool
78  operator=(const VideoSampler &vs)
79  {
80  return parent == vs.parent;
81  }
82  } sampler;
83  friend class VideoSampler;
84 
85  void OnVideoSample(BYTE *pBuffer, DWORD dwDataLen, REFERENCE_TIME t_start);
86 
87 public:
93  CaptureDSCapture(const CaptureDevice captureDevice);
98  bool start();
99  void stop();
100  cv::Mat captureImage();
102  std::string SerializeId();
103  bool Serialize(Serialization *serialization);
104 
105 private:
106  CDSCapture * m_pDSCapture;
107  int m_nBpp;
108  int m_nVideo_x_res;
109  int m_nVideo_y_res;
110  BYTE * imgBuffer;
111  BYTE * imgBufferForCallback;
112  IplImage * mReturnFrame;
113  CRITICAL_SECTION crit;
114  unsigned int buffer_size;
115  HANDLE next_event;
116 };
117 
124 class ALVAR_CAPTURE_PLUGIN_DSCAPTURE_EXPORT CapturePluginDSCapture : public alvar::CapturePlugin
125 {
126 public:
132  CapturePluginDSCapture(const std::string &captureType);
138  Capture * createCapture(const CaptureDevice captureDevice);
139 };
140 
141 extern "C" ALVAR_CAPTURE_PLUGIN_DSCAPTURE_EXPORT void
142 registerPlugin(const std::string &captureType, alvar::CapturePlugin *&capturePlugin);
143 
144 } // namespace plugins
145 } // namespace alvar
146 
147 #endif
This file implements a capture interface.
This file implements a capture plugin interface.
CaptureDevice holder for camera information.
Definition: CaptureDevice.h:45
Capture interface that plugins must implement.
Definition: Capture.h:47
CapturePlugin interface that plugins must implement.
Definition: CapturePlugin.h:45
std::vector< CaptureDevice > CaptureDeviceVector
Vector of CaptureDevices.
Definition: CapturePlugin.h:59
Class for serializing class content to/from file or std::iostream.
Definition: Util.h:371
Implementation of Capture interface for DSCapture plugin.
bool Serialize(Serialization *serialization)
Performs serialization of the class members and configuration.
CaptureDSCapture(const CaptureDevice captureDevice)
Constructor.
cv::Mat captureImage()
Capture one image from the camera.
void stop()
Stops the camera capture.
bool start()
Starts the camera capture.
bool showSettingsDialog()
Show the settings dialog of the camera.
std::string SerializeId()
The identification of the class for serialization.
Implementation of CapturePlugin interface for DSCapture plugin.
CapturePluginDSCapture(const std::string &captureType)
Constructor.
Capture * createCapture(const CaptureDevice captureDevice)
Create Capture class. Transfers onwership to the caller.
CaptureDeviceVector enumerateDevices()
Enumerate capture devices currently available.
Main ALVAR namespace.
Definition: Alvar.h:174