#include "FeedCreate.hpp" #include "NoSignalFeed.hpp" #include "MxlFeed.hpp" #include "MxlSdkFeed.hpp" #include "SmpteBarsFeed.hpp" #include std::unique_ptr createFeed( const FeedConfig& config, uint32_t feedIndex, uint32_t frameWidth, uint32_t frameHeight, bool verbose) { switch (config.kind) { case FeedKind::MxlSdk: { if (config.mxlDomain.empty() || config.mxlFlowId.empty()) { std::cerr << "Feed " << (feedIndex + 1) << ": mxlsdk requires domain and flowId" << std::endl; return std::make_unique( feedIndex, frameWidth, frameHeight); } if (verbose) { std::cerr << "Feed " << (feedIndex + 1) << ": mxlsdk domain=" << config.mxlDomain << " flowId=" << config.mxlFlowId << std::endl; } return std::make_unique( config.mxlDomain, config.mxlFlowId, frameWidth, frameHeight, verbose); } case FeedKind::MxlPlaceholder: { auto feed = std::make_unique( frameWidth, frameHeight ); if (verbose) { std::cerr << "MXL SDK: " << (feed->isUsingRealSdk() ? "enabled" : "disabled, using placeholder") << std::endl; } return feed; } case FeedKind::SmpteBars: if (verbose) { std::cerr << "Feed " << (feedIndex + 1) << ": smpte bars" << std::endl; } return std::make_unique( frameWidth, frameHeight ); case FeedKind::NoSignal: default: if (verbose) { std::cerr << "Feed " << (feedIndex + 1) << ": no signal" << std::endl; } return std::make_unique( feedIndex, frameWidth, frameHeight ); } }