修复rtp组播的bug
This commit is contained in:
parent
b2e650f9f6
commit
5901ff197d
|
|
@ -58,6 +58,8 @@ void RtpBroadCaster::setDetachCB(void* listener, const onDetach& cb) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RtpBroadCaster::~RtpBroadCaster() {
|
RtpBroadCaster::~RtpBroadCaster() {
|
||||||
|
m_pReader->setReadCB(nullptr);
|
||||||
|
m_pReader->setDetachCB(nullptr);
|
||||||
DebugL;
|
DebugL;
|
||||||
}
|
}
|
||||||
RtpBroadCaster::RtpBroadCaster(const string &strLocalIp,const string &strApp,const string &strStream) {
|
RtpBroadCaster::RtpBroadCaster(const string &strLocalIp,const string &strApp,const string &strStream) {
|
||||||
|
|
@ -93,15 +95,13 @@ RtpBroadCaster::RtpBroadCaster(const string &strLocalIp,const string &strApp,con
|
||||||
pSock->sendTo((char *) pkt->payload + 4, pkt->length - 4,(struct sockaddr *)(&peerAddr));
|
pSock->sendTo((char *) pkt->payload + 4, pkt->length - 4,(struct sockaddr *)(&peerAddr));
|
||||||
});
|
});
|
||||||
m_pReader->setDetachCB([this](){
|
m_pReader->setDetachCB([this](){
|
||||||
|
unordered_map<void * , onDetach > m_mapDetach_copy;
|
||||||
|
{
|
||||||
lock_guard<recursive_mutex> lck(m_mtx);
|
lock_guard<recursive_mutex> lck(m_mtx);
|
||||||
list<onDetach> lst;
|
m_mapDetach_copy.swap(m_mapDetach);
|
||||||
for(auto &pr : m_mapDetach){
|
|
||||||
lst.emplace_back(pr.second);
|
|
||||||
}
|
}
|
||||||
m_mapDetach.clear();
|
for(auto &pr : m_mapDetach_copy){
|
||||||
|
pr.second();
|
||||||
for(auto &cb : lst){
|
|
||||||
cb();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
DebugL << MultiCastAddressMaker::toString(*m_multiAddr) << " "
|
DebugL << MultiCastAddressMaker::toString(*m_multiAddr) << " "
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue