diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Private.h b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Private.h index 1d02b63691..5451a490bd 100644 --- a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Private.h +++ b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Private.h @@ -48,6 +48,8 @@ class PeerConnectionDelegateAdapter : public PeerConnectionObserver { void OnAddTrack(rtc::scoped_refptr receiver, const std::vector> &streams) override; + void OnRemoveTrack(rtc::scoped_refptr receiver) override; + private: __weak RTCPeerConnection *peer_connection_; }; diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm index 103b3c095d..d0bb39bfb0 100644 --- a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm +++ b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm @@ -236,6 +236,16 @@ void PeerConnectionDelegateAdapter::OnAddTrack( } } +void PeerConnectionDelegateAdapter::OnRemoveTrack( + rtc::scoped_refptr receiver) { + RTCPeerConnection *peer_connection = peer_connection_; + if ([peer_connection.delegate respondsToSelector:@selector(peerConnection:didRemoveReceiver:)]) { + RTCRtpReceiver *rtpReceiver = + [[RTCRtpReceiver alloc] initWithFactory:peer_connection.factory nativeRtpReceiver:receiver]; + [peer_connection.delegate peerConnection:peer_connection didRemoveReceiver:rtpReceiver]; + } +} + } // namespace webrtc diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h b/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h index 94036cc753..90fff25c67 100644 --- a/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h +++ b/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h @@ -124,6 +124,10 @@ RTC_EXPORT didAddReceiver:(RTCRtpReceiver *)rtpReceiver streams:(NSArray *)mediaStreams; +/** Called when the receiver and its track are removed. */ +- (void)peerConnection:(RTCPeerConnection *)peerConnection + didRemoveReceiver:(RTCRtpReceiver *)rtpReceiver; + @end RTC_EXPORT