diff options
Diffstat (limited to 'src/imaging/FWCamera.h')
-rw-r--r-- | src/imaging/FWCamera.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/imaging/FWCamera.h b/src/imaging/FWCamera.h new file mode 100644 index 0000000..c7badc0 --- /dev/null +++ b/src/imaging/FWCamera.h @@ -0,0 +1,94 @@ +// +// libavg - Media Playback Engine. +// Copyright (C) 2003-2014 Ulrich von Zadow +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Current versions can be found at www.libavg.de +// + +#ifndef _FWCamera_H_ +#define _FWCamera_H_ + +#include "../avgconfigwrapper.h" + +#include "Camera.h" + +#include "../graphics/Bitmap.h" +#include "../graphics/Pixel24.h" + +#include "../base/GLMHelper.h" + +#ifdef AVG_ENABLE_1394_2 +#include <dc1394/control.h> +#include <dc1394/register.h> +#endif +#ifndef AVG_ENABLE_1394_2 +typedef unsigned int dc1394feature_t; +#endif + +#include <string> +#include <map> + +namespace avg { + +class AVG_API FWCamera: public Camera { +public: + FWCamera(unsigned long long guid, int unit, bool bFW800, IntPoint size, + PixelFormat camPF, PixelFormat destPF, float frameRate); + virtual ~FWCamera(); + virtual void startCapture(); + + virtual BitmapPtr getImage(bool bWait); + + virtual const std::string& getDevice() const; + virtual const std::string& getDriverName() const; + + virtual int getFeature(CameraFeature feature) const; + bool hasFeature(CameraFeature feature); + virtual void setFeature(CameraFeature feature, int value, bool bIgnoreOldValue=false); + virtual void setFeatureOneShot(CameraFeature feature); + virtual int getWhitebalanceU() const; + virtual int getWhitebalanceV() const; + virtual void setWhitebalance(int u, int v, bool bIgnoreOldValue=false); + + static int countCameras(); + static CameraInfo* getCameraInfos(int deviceNumber); + static void resetBus(); + +private: + void setFeature(dc1394feature_t feature, int value); + void setStrobeDuration(int microsecs); + void getWhitebalance(int* pU, int* pV) const; + void enablePtGreyBayer(); + +#ifdef AVG_ENABLE_1394_2 + static void getCameraImageFormats(dc1394camera_t* pCamera, CameraInfo* camInfo); + static void getCameraControls(dc1394camera_t* pCamera, CameraInfo* camInfo); + + dc1394_t * m_pDC1394; + dc1394camera_t * m_pCamera; + dc1394framerate_t m_FrameRateConstant; + dc1394video_mode_t m_Mode; +#endif + + FeatureMap m_Features; + int m_WhitebalanceU; + int m_WhitebalanceV; +}; + +} + +#endif |