RTP代理支持完整的事件

This commit is contained in:
xiongziliang
2020-02-28 16:25:14 +08:00
parent 5acdf1f789
commit 109fab2cb1
6 changed files with 114 additions and 8 deletions

View File

@@ -32,9 +32,31 @@
#include <mutex>
#include <unordered_map>
#include "RtpProcess.h"
#include "Common/MediaSource.h"
namespace mediakit{
class RtpSelector;
class RtpProcessHelper : public MediaSourceEvent , public std::enable_shared_from_this<RtpProcessHelper> {
public:
typedef std::shared_ptr<RtpProcessHelper> Ptr;
RtpProcessHelper(uint32_t ssrc,const weak_ptr<RtpSelector > &parent);
~RtpProcessHelper();
void attachEvent();
RtpProcess::Ptr & getProcess();
protected:
// 通知其停止推流
bool close(MediaSource &sender,bool force) override;
// 通知无人观看
void onNoneReader(MediaSource &sender) override;
// 观看总人数
int totalReaderCount(MediaSource &sender) override;
private:
weak_ptr<RtpSelector > _parent;
RtpProcess::Ptr _process;
uint32_t _ssrc = 0;
};
class RtpSelector : public std::enable_shared_from_this<RtpSelector>{
public:
RtpSelector();
@@ -48,7 +70,7 @@ public:
private:
void onManager();
private:
unordered_map<uint32_t,RtpProcess::Ptr> _map_rtp_process;
unordered_map<uint32_t,RtpProcessHelper::Ptr> _map_rtp_process;
recursive_mutex _mtx_map;
Ticker _last_rtp_time;
};