#ifndef CAM_RTSP_SERVER_H #define CAM_RTSP_SERVER_H #include #include #include #include #include #include #include "CamFramedSource.h" #include "CamUnicastServerMediaSubsession.h" class CamRTSPServer { public: typedef struct { int rtspPort; std::string streamName; int maxPacketSize; int maxBufSize; bool isHttpEnable; int httpPort; int bitrate; } Config_t; CamRTSPServer(); ~CamRTSPServer(); void stopServer(); void addTranscoder(std::shared_ptr transcoder); void run(); private: char watcher_; TaskScheduler *scheduler_; UsageEnvironment *env_; RTSPServer *server_; Config_t config; /** * @brief Video sources. */ std::vector> transcoders_; /** * @brief Framed sources. */ std::vector allocatedVideoSources; /** * @brief Announce new create media session. * * @param sms - create server media session. * @param deviceName - the name of video source device. */ void announceStream(ServerMediaSession *sms, const std::string &deviceName); /** * @brief Add new server media session using transcoder as a source to the server * * @param transoder - video source. * @param streamName - the name of stream (part of the URL), e.g. rtsp:///camera/1. * @param streamDesc - description of stream. */ void addMediaSession(std::shared_ptr transoder, const std::string &streamName, const std::string &streamDesc); }; #endif