#pragma once #include "fgc/ICameraSource.h" #include #include #include namespace fgc { // Real camera source backed by the Allied Vision Vimba X SDK (VmbCPP). Opens // cameras by ID, runs continuous acquisition with a settle-then-keep frame // observer, and delivers completed frames to the callback. The encode/save // step lives in ImagePipeline, so this class only produces Frames. class VimbaCameraSource : public ICameraSource { public: explicit VimbaCameraSource(std::vector camera_ids); ~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; private: struct Impl; std::unique_ptr impl_; }; } // namespace fgc