fwt_software/include/fgc/VimbaCameraSource.h

43 lines
1.3 KiB
C++

#pragma once
#include "fgc/CameraMode.h"
#include "fgc/Config.h"
#include "fgc/ICameraSource.h"
#include <memory>
namespace fgc {
// Real camera source backed by the Allied Vision Vimba X SDK (VmbCPP). Opens the
// cameras named in CameraConfig; every on-camera setting comes from a CameraMode,
// which is just a list of Vimba features written verbatim.
//
// The camera free-runs continuously at the mode's AcquisitionFrameRate with its
// own auto-exposure tracking the light. trigger() hands over the latest complete
// frame, restarting acquisition if the stream has stalled. Encode/save lives in
// ImagePipeline.
class VimbaCameraSource : public ICameraSource {
public:
explicit VimbaCameraSource(CameraConfig config);
~VimbaCameraSource() override;
// Mode to apply at start(). Also the mode setMode() replaces.
void setInitialMode(CameraMode mode);
void open() override;
void close() override;
void start() override;
void stop() override;
bool trigger() override;
bool setMode(const CameraMode& mode) override;
void setFrameCallback(FrameCallback cb) override;
int cameraCount() const override;
std::vector<CameraDeviceInfo> deviceInfo() override;
private:
struct Impl;
std::unique_ptr<Impl> impl_;
};
} // namespace fgc