mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-30 06:42:22 +08:00
RTP代理支持完整的事件
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user