#ifndef B351F133_EBBC_42F5_9C48_5BA22D16BB53 #define B351F133_EBBC_42F5_9C48_5BA22D16BB53 /* ******************************************************************************* * INCLUDE ******************************************************************************* */ #include "MPPChannel.h" #include "../../core/VideoMixer.h" namespace Video { namespace MPP5 { /* ******************************************************************************* * CLASS DECLARE ******************************************************************************* */ class VideoMixer: public MPPChannel, public Core::VideoMixer { public: class Channel: public MPPChannel, public Core::VideoMixer::Channel { public: using Ptr = Poco::AutoPtr; protected: Channel(VideoMixer::Ptr, uint32_t id); public: ~Channel(); protected: virtual void start() override; virtual void stop() override; void onConfigChanged(ParameterNames& names) override; void onLink(Core::Component::Ptr pPrevious) override; void onUnlink(Core::Component::Ptr pPrevious) override; void activate(); void deactivate(); PROPERTY_DECLARE(Activated, bool, false, protected, protected) void configureChannel(); friend class VideoMixer; }; public: VideoMixer(const std::string& name); ~VideoMixer(); protected: void start() override; void stop() override; void initialize() override; void deinitialize() override; void onConfigChanged(ParameterNames& names) override; Core::VideoMixer::Channel::Ptr createChannel(uint32_t id) override; friend class Channel; }; } } #endif