diff --git a/3rdpart/ZLToolKit b/3rdpart/ZLToolKit index 36d1122f..a827f0bd 160000 --- a/3rdpart/ZLToolKit +++ b/3rdpart/ZLToolKit @@ -1 +1 @@ -Subproject commit 36d1122f42ab6b92d0ca8f57df0462acc632efc7 +Subproject commit a827f0bdcb4221c19ab1a243ebd1f01fa7dc50f2 diff --git a/webrtc/WebRtcTransport.cpp b/webrtc/WebRtcTransport.cpp index 6769086b..dd6b40c5 100644 --- a/webrtc/WebRtcTransport.cpp +++ b/webrtc/WebRtcTransport.cpp @@ -436,8 +436,11 @@ void WebRtcTransportImp::onStartWebRTC() { if (m_offer->type != TrackApplication) { //记录rtp ext类型与id的关系,方便接收或发送rtp时修改rtp ext id track->rtp_ext_ctx = std::make_shared(*m_offer); - track->rtp_ext_ctx->setOnGetRtp([this, &track](uint8_t pt, uint32_t ssrc, const string &rid) { + weak_ptr weak_track = track; + track->rtp_ext_ctx->setOnGetRtp([this, weak_track](uint8_t pt, uint32_t ssrc, const string &rid) { //ssrc --> MediaTrack + auto track = weak_track.lock(); + assert(track); _ssrc_to_track[ssrc] = track; InfoL << "get rtp, pt:" << (int) pt << ", ssrc:" << ssrc << ", rid:" << rid; });