#pragma once #include #include "GStreamerPipeline.h" #include #include #include #include class StreamingEngine { public: explicit StreamingEngine(std::shared_ptr camera); ~StreamingEngine(); bool start(const std::string& gstPipeline); void stop(); [[nodiscard]] bool isRunning() const { return running_; } void setFormat(const VxFormat& format); [[nodiscard]] VxFormat getCurrentFormat() const { return currentFormat_; } void setPipelineDescription(const std::string& pipeline); private: void acquisitionLoop(); std::shared_ptr camera_; std::unique_ptr gstPipeline_; std::unique_ptr acquisitionThread_; std::atomic running_; std::mutex mutex_; VxFormat currentFormat_; std::unique_ptr buffer_; size_t bufferSize_; };