#pragma once #include "fgc/Config.h" #include "fgc/ICameraSource.h" #include 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 deviceInfo() override; private: struct Impl; std::unique_ptr impl_; }; } // namespace fgc