/** * @RDE_HEADER@ * AudioVideoHandler * $Id$ * $HeadURL$ * $Author$ * Created by Christian Fröbel, SLSE, 2017-11-27 */ #pragma once #include #include class QString; namespace AudioVideoManagement { class DatabaseInterface; class ExerciseHandler; class Exercise; class AudioVideoHandlerImpl; class DefaultAvMenus; namespace Interface { class Dts; } /** * The AudioVideoHandler is responsible to keep the AVS device_config in sync * with cameras and announcement units currently mounted. * For this it observes the corrsponding Exercise (signals Exercise::assetAssigned() and Exercise::assetUnassigned()). * The Exercise instance is managed by the AssetAssignmentManager. * Also, the currently active streams will be published in the corresponding exercise partition. * * The functionality itself is implemented in AudioVideoHandlerImpl. * * @see AudioVideoHandlerImpl * @author Christian Fröbel */ class AudioVideoHandler : public QObject { Q_OBJECT public: AudioVideoHandler(Exercise *exercise, ExerciseHandler *exerciseHandler, DefaultAvMenus *defaultAvMenus, DatabaseInterface *db, Interface::Dts *dts); virtual ~AudioVideoHandler(); signals: /** Signalled after device_config modifications. */ void avDbReloadNeeded(); private: class DbProxy; class DtsProxy; std::unique_ptr m_dbProxy; std::unique_ptr m_dtsProxy; std::unique_ptr m_impl; }; } // namespace AudioVideoManagement