fwt_software/include/fgc/VimbaCameraSource.h

36 lines
1.1 KiB
C++

#pragma once
#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 in CameraConfig, applies the on-camera imaging settings in-session, runs a
// PACED FREE-RUN stream (fixed low frame rate, no software trigger - large frames
// streamed fast stall this USB3 host), and keeps the latest complete frame; trigger()
// delivers it to the callback once per waypoint. Encode/save lives in ImagePipeline.
class VimbaCameraSource : public ICameraSource {
public:
explicit VimbaCameraSource(CameraConfig config);
~VimbaCameraSource() override;
void open() override;
void close() override;
void start() override;
void stop() override;
bool trigger() override;
bool setFrameRate(double fps) 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