Skip to content

Commit 448f6fa

Browse files
committed
优化rtp代理超时管理
1 parent c77f82f commit 448f6fa

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

src/Rtp/RtpSelector.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@ namespace mediakit{
3232
INSTANCE_IMP(RtpSelector);
3333

3434
bool RtpSelector::inputRtp(const char *data, int data_len,const struct sockaddr *addr,uint32_t *dts_out) {
35-
if(_last_rtp_time.elapsedTime() > 3000){
36-
_last_rtp_time.resetTime();
37-
onManager();
38-
}
3935
uint32_t ssrc = 0;
4036
if(!getSSRC(data,data_len,ssrc)){
4137
WarnL << "get ssrc from rtp failed:" << data_len;
@@ -67,10 +63,26 @@ RtpProcess::Ptr RtpSelector::getProcess(uint32_t ssrc,bool makeNew) {
6763
if(!ref){
6864
ref = std::make_shared<RtpProcessHelper>(ssrc,shared_from_this());
6965
ref->attachEvent();
66+
createTimer();
7067
}
7168
return ref->getProcess();
7269
}
7370

71+
void RtpSelector::createTimer() {
72+
if (!_timer) {
73+
//创建超时管理定时器
74+
weak_ptr<RtpSelector> weakSelf = shared_from_this();
75+
_timer = std::make_shared<Timer>(3.0, [weakSelf] {
76+
auto strongSelf = weakSelf.lock();
77+
if (!strongSelf) {
78+
return false;
79+
}
80+
strongSelf->onManager();
81+
return true;
82+
}, EventPollerPool::Instance().getPoller());
83+
}
84+
}
85+
7486
void RtpSelector::delProcess(uint32_t ssrc,const RtpProcess *ptr) {
7587
lock_guard<decltype(_mtx_map)> lck(_mtx_map);
7688
auto it = _map_rtp_process.find(ssrc);

src/Rtp/RtpSelector.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,11 @@ class RtpSelector : public std::enable_shared_from_this<RtpSelector>{
6969
void delProcess(uint32_t ssrc,const RtpProcess *ptr);
7070
private:
7171
void onManager();
72+
void createTimer();
7273
private:
7374
unordered_map<uint32_t,RtpProcessHelper::Ptr> _map_rtp_process;
7475
recursive_mutex _mtx_map;
75-
Ticker _last_rtp_time;
76+
Timer::Ptr _timer;
7677
};
7778

7879
}//namespace mediakit

0 commit comments

Comments
 (0)