Chromium Code Reviews| Index: webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm | 
| diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm b/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm | 
| index b4a873847de5bda226a1c72d23a48b7eff97f1bb..cdc8c42aeca3354a4fd74f6ab27338f2494e1956 100644 | 
| --- a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm | 
| +++ b/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm | 
| @@ -127,8 +127,7 @@ void PeerConnectionDelegateAdapter::OnSignalingChange( | 
| void PeerConnectionDelegateAdapter::OnAddStream( | 
| rtc::scoped_refptr<MediaStreamInterface> stream) { | 
| - RTCMediaStream *mediaStream = | 
| - [[RTCMediaStream alloc] initWithNativeMediaStream:stream]; | 
| + RTCMediaStream* mediaStream = GetOrCreateObjcStream(stream); | 
| RTCPeerConnection *peer_connection = peer_connection_; | 
| [peer_connection.delegate peerConnection:peer_connection | 
| didAddStream:mediaStream]; | 
| @@ -200,6 +199,36 @@ void PeerConnectionDelegateAdapter::OnIceCandidatesRemoved( | 
| didRemoveIceCandidates:ice_candidates]; | 
| } | 
| +void PeerConnectionDelegateAdapter::OnAddTrack( | 
| + rtc::scoped_refptr<RtpReceiverInterface> receiver, | 
| + std::vector<rtc::scoped_refptr<MediaStreamInterface>> streams) { | 
| + RTCRtpReceiver* rtpReceiver = | 
| 
 
tkchin_webrtc
2016/11/22 20:41:34
* on right
RTCRtpReceiver *rtpReceiver
here and e
 
Zhi Huang
2016/11/22 23:38:42
Done.
 
 | 
| + [[RTCRtpReceiver alloc] initWithNativeRtpReceiver:receiver]; | 
| + NSMutableArray* mediaStreams = | 
| + [NSMutableArray arrayWithCapacity:streams.size()]; | 
| + for (const auto stream : streams) { | 
| + RTCMediaStream* mediaStream = GetOrCreateObjcStream(stream); | 
| + [mediaStreams addObject:mediaStream]; | 
| + } | 
| + RTCPeerConnection* peer_connection = peer_connection_; | 
| + [peer_connection.delegate peerConnection:peer_connection | 
| + didAddTrack:rtpReceiver | 
| + attachedStreams:mediaStreams]; | 
| +} | 
| + | 
| +RTCMediaStream* PeerConnectionDelegateAdapter::GetOrCreateObjcStream( | 
| 
 
tkchin_webrtc
2016/11/22 20:41:34
I'd suggest placing these streams refs on peerconn
 
Zhi Huang
2016/11/22 23:38:42
Ah, yes. This is a good point.
Done.
 
 | 
| + rtc::scoped_refptr<MediaStreamInterface> stream) { | 
| + RTCMediaStream* mediaStream = | 
| + nativeToObjcMediaStream_[[NSNumber numberWithLong:(long)stream.get()]]; | 
| + if (!mediaStream) { | 
| + mediaStream = | 
| + [[RTCMediaStream alloc] initWithNativeMediaStream:stream.get()]; | 
| + nativeToObjcMediaStream_[[NSNumber numberWithLong:(long)stream.get()]] = | 
| + mediaStream; | 
| + } | 
| + return mediaStream; | 
| +} | 
| + | 
| } // namespace webrtc |