Rev 4 | Rev 23 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#ifndef CAMERA_H
#define CAMERA_H
#include <iostream>
#include <vector>
struct CameraFrame {
unsigned short *memory;
unsigned int width;
unsigned int height;
unsigned int bitDepth;
unsigned int sizeBytes;
unsigned int timeStamp;
CameraFrame(): memory(NULL), width(0), height(0), bitDepth(0), sizeBytes(0), timeStamp(0){}
};
struct CameraSettings {
float gain;
float shutter; // [ms]
CameraSettings(): gain(0.0), shutter(0.0) {}
};
struct CameraInfo {
std::string vendor;
std::string model;
unsigned int busID;
};
enum CameraTriggerMode {
triggerModeHardware,
triggerModeSoftware
};
// Camera factory methods and abstract base class for camera implementations
class Camera {
public:
// Static "camera factory" methods
static std::vector< std::vector<CameraInfo> > GetInterfaceCameraList();
static Camera* NewCamera(unsigned int interfaceNum, unsigned int camNum, CameraTriggerMode triggerMode);
// Interface function
Camera(CameraTriggerMode _triggerMode) : capturing(false), triggerMode(_triggerMode){}
virtual void startCapture() = 0;
bool isCapturing(){return capturing;}
virtual void stopCapture() = 0;
virtual CameraFrame getFrame() = 0;
virtual size_t getFrameSizeBytes() = 0;
virtual size_t getFrameWidth() = 0;
virtual size_t getFrameHeight() = 0;
virtual CameraSettings getCameraSettings() = 0;
virtual void setCameraSettings(CameraSettings) = 0;
virtual ~Camera(){}
protected:
bool capturing;
CameraTriggerMode triggerMode;
};
#endif