#ifndef B61EDCD6_1C1C_4355_AD2C_4A09C55099D0 #define B61EDCD6_1C1C_4355_AD2C_4A09C55099D0 /* ******************************************************************************* * INCLUDE ******************************************************************************* */ #include "Component.h" #include "util/FactoryManager.h" #include "util/Task.h" #include namespace Video { namespace Core { /* ******************************************************************************* * CLASS DECLARE ******************************************************************************* */ class MuxerSelector { public: static const std::string select(const std::string& url) { return Poco::URI(url).getScheme(); } }; class Muxer: public Component, public ::Util::FactoryManager { public: using Ptr = Poco::AutoPtr; public: Muxer(const std::string& name, const std::string& url); virtual ~Muxer(); public: const std::string& url() const; std::string scheme() const; protected: void start() override; void stop() override; void onLink(Component::Ptr pPrevious) override; void onUnlink(Component::Ptr pPrevious) override; void onConfigChanged(ParameterNames& names) override; virtual void connect() = 0; virtual void mux() = 0; virtual void disconnect() = 0; private: std::string _url; Util::Task _task; }; inline const std::string& Muxer::url() const { return _url; } inline std::string Muxer::scheme() const { return Poco::URI(url()).getScheme(); } } } #endif