From 63bafd62f1316d496c6c207d253f24867d9b7fe5 Mon Sep 17 00:00:00 2001 From: magjed Date: Mon, 27 Feb 2017 07:04:25 -0800 Subject: [PATCH] Revert of Add the OnAddTrack callback for Objective-C wrapper. (patchset #7 id:240001 of https://codereview.webrtc.org/2513063003/ ) Reason for revert: This CL breaks iOS AppRTCMobile. We don't have any automatic tests running on the bots yet, so please try AppRTCMobile locally before relanding. Stack trace: * thread #15: tid = 0x20e933, 0x0000000100488440 AppRTCMobile`webrtc::AudioRtpReceiver::OnFirstPacketReceived(this=0x0000000170156c60, channel=0x000000010511a600) + 48 at rtpreceiver.cc:133, name = 'Thread 0x0x10421b2a0', stop reason = EXC_BAD_ACCESS (code=1, address=0x1a1aac71979) * frame #0: 0x0000000100488440 AppRTCMobile`webrtc::AudioRtpReceiver::OnFirstPacketReceived(this=0x0000000170156c60, channel=0x000000010511a600) + 48 at rtpreceiver.cc:133 frame #1: 0x000000010048a3f8 AppRTCMobile`void sigslot::_opaque_connection::emitter(self=0x000000017424b380, args=0x000000010511a600) + 184 at sigslot.h:391 frame #2: 0x00000001005a30ec AppRTCMobile`void sigslot::_opaque_connection::emit(this=0x000000017424b380, args=0x000000010511a600) const + 56 at sigslot.h:381 frame #3: 0x00000001005a3094 AppRTCMobile`sigslot::signal_with_thread_policy::emit(this=0x000000010511a678, args=0x000000010511a600) + 504 at sigslot.h:615 frame #4: 0x000000010057ef5c AppRTCMobile`sigslot::signal_with_thread_policy::operator(this=0x000000010511a678, args=0x000000010511a600)(cricket::BaseChannel*) + 32 at sigslot.h:621 frame #5: 0x000000010057ef00 AppRTCMobile`cricket::BaseChannel::OnMessage(this=0x000000010511a600, pmsg=0x000000016e676db0) + 600 at channel.cc:1494 frame #6: 0x0000000100584a58 AppRTCMobile`cricket::VoiceChannel::OnMessage(this=0x000000010511a600, pmsg=0x000000016e676db0) + 152 at channel.cc:1909 frame #7: 0x000000010017c0dc AppRTCMobile`rtc::MessageQueue::Dispatch(this=0x000000010421b2a0, pmsg=0x000000016e676db0) + 336 at messagequeue.cc:538 frame #8: 0x00000001001d8efc AppRTCMobile`rtc::Thread::ProcessMessages(this=0x000000010421b2a0, cmsLoop=-1) + 228 at thread.cc:496 frame #9: 0x00000001001d8e08 AppRTCMobile`rtc::Thread::Run(this=0x000000010421b2a0) + 28 at thread.cc:327 frame #10: 0x00000001001d8b0c AppRTCMobile`rtc::Thread::PreRun(pv=0x000000017000f030) + 300 at thread.cc:316 frame #11: 0x00000001843f1850 libsystem_pthread.dylib`_pthread_body + 240 frame #12: 0x00000001843f1760 libsystem_pthread.dylib`_pthread_start + 284 frame #13: 0x00000001843eed94 libsystem_pthread.dylib`thread_start + 4 Original issue's description: > Add the OnAddTrack callback for Objective-C wrapper. > > Created an Obj-C wrapper for the callback OnAddTrack in this CL since it has been added to native C++ API > The callback function is called when a track is signaled by remote side and a new RtpReceiver is created. > The application can tell when tracks are added to the streams by listening to this callback. > > BUG=webrtc:6112 > > Review-Url: https://codereview.webrtc.org/2513063003 > Cr-Commit-Position: refs/heads/master@{#16835} > Committed: https://chromium.googlesource.com/external/webrtc/+/633f6fe0046131ed815098298b9a3120bac1d7a0 TBR=tkchin@webrtc.org,deadbeef@webrtc.org,zhihuang@webrtc.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=webrtc:6112 Review-Url: https://codereview.webrtc.org/2720753002 Cr-Commit-Position: refs/heads/master@{#16871} --- .../Classes/RTCPeerConnection+Private.h | 11 +---- .../Framework/Classes/RTCPeerConnection.mm | 44 +------------------ .../Headers/WebRTC/RTCPeerConnection.h | 8 ---- 3 files changed, 3 insertions(+), 60 deletions(-) diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+Private.h b/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+Private.h index 963b5f6bf9..60ab868a7c 100644 --- a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+Private.h +++ b/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+Private.h @@ -49,12 +49,8 @@ class PeerConnectionDelegateAdapter : public PeerConnectionObserver { void OnIceCandidatesRemoved( const std::vector& candidates) override; - void OnAddTrack( - rtc::scoped_refptr receiver, - const std::vector>& streams) override; - private: - __weak RTCPeerConnection* peer_connection_; + __weak RTCPeerConnection *peer_connection_; }; } // namespace webrtc @@ -106,11 +102,6 @@ class PeerConnectionDelegateAdapter : public PeerConnectionObserver { + (webrtc::PeerConnectionInterface::StatsOutputLevel) nativeStatsOutputLevelForLevel:(RTCStatsOutputLevel)level; -- (RTCMediaStream *)mediaStreamForNativeStream: - (rtc::scoped_refptr)stream; - -- (void)removeNativeMediaStream:(rtc::scoped_refptr)stream; - @end NS_ASSUME_NONNULL_END diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm b/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm index e9428d3b95..de7608c3b9 100644 --- a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm +++ b/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm @@ -27,7 +27,6 @@ #include "webrtc/api/jsepicecandidate.h" #include "webrtc/base/checks.h" -#include "webrtc/sdk/objc/Framework/Classes/helpers.h" NSString * const kRTCPeerConnectionErrorDomain = @"org.webrtc.RTCPeerConnection"; @@ -128,8 +127,9 @@ void PeerConnectionDelegateAdapter::OnSignalingChange( void PeerConnectionDelegateAdapter::OnAddStream( rtc::scoped_refptr stream) { + RTCMediaStream *mediaStream = + [[RTCMediaStream alloc] initWithNativeMediaStream:stream]; RTCPeerConnection *peer_connection = peer_connection_; - RTCMediaStream *mediaStream = [peer_connection mediaStreamForNativeStream:stream]; [peer_connection.delegate peerConnection:peer_connection didAddStream:mediaStream]; } @@ -141,7 +141,6 @@ void PeerConnectionDelegateAdapter::OnRemoveStream( RTCPeerConnection *peer_connection = peer_connection_; [peer_connection.delegate peerConnection:peer_connection didRemoveStream:mediaStream]; - [peer_connection removeNativeMediaStream:stream]; } void PeerConnectionDelegateAdapter::OnDataChannel( @@ -201,28 +200,6 @@ void PeerConnectionDelegateAdapter::OnIceCandidatesRemoved( didRemoveIceCandidates:ice_candidates]; } -void PeerConnectionDelegateAdapter::OnAddTrack( - rtc::scoped_refptr receiver, - const std::vector>& streams) { - RTCRtpReceiver* rtpReceiver = - [[RTCRtpReceiver alloc] initWithNativeRtpReceiver:receiver]; - NSMutableArray* mediaStreams = - [NSMutableArray arrayWithCapacity:streams.size()]; - - RTCPeerConnection* peer_connection = peer_connection_; - for (const auto stream : streams) { - RTCMediaStream* mediaStream = - [peer_connection mediaStreamForNativeStream:stream]; - [mediaStreams addObject:mediaStream]; - } - if ([peer_connection.delegate - respondsToSelector:@selector(peerConnection:didAddTrack:streams:)]) { - [peer_connection.delegate peerConnection:peer_connection - didAddTrack:rtpReceiver - streams:mediaStreams]; - } -} - } // namespace webrtc @@ -232,7 +209,6 @@ void PeerConnectionDelegateAdapter::OnAddTrack( rtc::scoped_refptr _peerConnection; std::unique_ptr _nativeConstraints; BOOL _hasStartedRtcEventLog; - NSMutableDictionary *_mediaStreamsByStreamId; } @synthesize delegate = _delegate; @@ -262,7 +238,6 @@ void PeerConnectionDelegateAdapter::OnAddTrack( } _localStreams = [[NSMutableArray alloc] init]; _delegate = delegate; - _mediaStreamsByStreamId = [NSMutableDictionary dictionary]; } return self; } @@ -613,21 +588,6 @@ void PeerConnectionDelegateAdapter::OnAddTrack( } } -- (RTCMediaStream *)mediaStreamForNativeStream: - (rtc::scoped_refptr)stream { - RTCMediaStream *mediaStream = - _mediaStreamsByStreamId[[NSString stringForStdString:stream->label()]]; - if (!mediaStream) { - mediaStream = [[RTCMediaStream alloc] initWithNativeMediaStream:stream.get()]; - _mediaStreamsByStreamId[[NSString stringForStdString:stream->label()]] = mediaStream; - } - return mediaStream; -} - -- (void)removeNativeMediaStream:(rtc::scoped_refptr)stream { - [_mediaStreamsByStreamId removeObjectForKey:[NSString stringForStdString:stream->label()]]; -} - - (rtc::scoped_refptr)nativePeerConnection { return _peerConnection; } diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h index 785dccff91..4438eb28ab 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h @@ -106,14 +106,6 @@ RTC_EXPORT - (void)peerConnection:(RTCPeerConnection *)peerConnection didOpenDataChannel:(RTCDataChannel *)dataChannel; -@optional -/** Called when a new track is signaled from remote peer. The new track is - * attached to the RtpReceiver. - * TODO(zhihuang): Remove the @optional once the downstream applitions implement this method.*/ -- (void)peerConnection:(RTCPeerConnection *)peerConnection - didAddTrack:(RTCRtpReceiver *)rtpReceiver - streams:(NSArray *)mediaStreams; - @end RTC_EXPORT