#pragma once #include #include #include #include class Hyperion; class QTimer; /// /// @brief Capture Control class which is a interface to the HyperionDaemon native capture classes. /// It controls the instance based enable/disable of capture feeds and PriorityMuxer registrations /// class CaptureCont : public QObject { Q_OBJECT public: CaptureCont(Hyperion* hyperion); ~CaptureCont(); void setSystemCaptureEnable(const bool& enable); void setV4LCaptureEnable(const bool& enable); private slots: /// /// @brief Handle component state change of V4L and SystemCapture /// @param component The component from enum /// @param enable The new state /// void handleCompStateChangeRequest(const hyperion::Components component, bool enable); /// /// @brief Handle settings update from Hyperion Settingsmanager emit or this constructor /// @param type settingyType from enum /// @param config configuration object /// void handleSettingsUpdate(const settings::type& type, const QJsonDocument& config); /// /// @brief forward system image /// @param image The image /// void handleSystemImage(const QString& name, const Image& image); /// /// @brief forward v4l image /// @param image The image /// void handleV4lImage(const QString& name, const Image & image); /// /// @brief Is called from _v4lInactiveTimer to set source after specific time to inactive /// void setV4lInactive(); /// /// @brief Is called from _systemInactiveTimer to set source after specific time to inactive /// void setSystemInactive(); private: /// Hyperion instance Hyperion* _hyperion; /// Reflect state of System capture and prio bool _systemCaptEnabled; quint8 _systemCaptPrio; QString _systemCaptName; QTimer* _systemInactiveTimer; /// Reflect state of v4l capture and prio bool _v4lCaptEnabled; quint8 _v4lCaptPrio; QString _v4lCaptName; QTimer* _v4lInactiveTimer; };