优化关闭媒体源相关逻辑: #1963

This commit is contained in:
ziyue
2022-09-18 20:36:47 +08:00
parent daafe62f35
commit 15affeff1d
21 changed files with 44 additions and 69 deletions

View File

@@ -134,17 +134,14 @@ void RtpProcessHelper::attachEvent() {
_process->setDelegate(shared_from_this());
}
bool RtpProcessHelper::close(MediaSource &sender, bool force) {
bool RtpProcessHelper::close(MediaSource &sender) {
//此回调在其他线程触发
if (!_process || (!force && _process->totalReaderCount(sender))) {
return false;
}
auto parent = _parent.lock();
if (!parent) {
return false;
}
parent->delProcess(_stream_id, _process.get());
WarnL << "close media:" << sender.getUrl() << " " << force;
WarnL << "close media: " << sender.getUrl();
return true;
}

View File

@@ -31,7 +31,7 @@ public:
protected:
// 通知其停止推流
bool close(MediaSource &sender,bool force) override;
bool close(MediaSource &sender) override;
private:
std::string _stream_id;

View File

@@ -124,13 +124,10 @@ void RtpSession::onRtpPacket(const char *data, size_t len) {
_ticker.resetTime();
}
bool RtpSession::close(MediaSource &sender, bool force) {
bool RtpSession::close(MediaSource &sender) {
//此回调在其他线程触发
if(!_process || (!force && static_pointer_cast<MediaSourceEvent>(_process)->totalReaderCount(sender))){
return false;
}
string err = StrPrinter << "close media:" << sender.getUrl() << " " << force;
safeShutdown(SockException(Err_shutdown,err));
string err = StrPrinter << "close media: " << sender.getUrl();
safeShutdown(SockException(Err_shutdown, err));
return true;
}

View File

@@ -35,7 +35,7 @@ public:
protected:
// 通知其停止推流
bool close(MediaSource &sender,bool force) override;
bool close(MediaSource &sender) override;
// 收到rtp回调
void onRtpPacket(const char *data, size_t len) override;
// RtpSplitter override