Index: webrtc/api/peerconnection.cc |
diff --git a/webrtc/api/peerconnection.cc b/webrtc/api/peerconnection.cc |
index c2039aeea414321e612e461d635df72e486904a3..e1ef6e2d67d42d2572a4933bf765f53d6f3ba570 100644 |
--- a/webrtc/api/peerconnection.cc |
+++ b/webrtc/api/peerconnection.cc |
@@ -381,10 +381,8 @@ namespace webrtc { |
// Factory class for creating remote MediaStreams and MediaStreamTracks. |
class RemoteMediaStreamFactory { |
public: |
- explicit RemoteMediaStreamFactory(rtc::Thread* signaling_thread, |
- rtc::Thread* worker_thread) |
- : signaling_thread_(signaling_thread), |
- worker_thread_(worker_thread) {} |
+ explicit RemoteMediaStreamFactory(rtc::Thread* signaling_thread) |
+ : signaling_thread_(signaling_thread) {} |
rtc::scoped_refptr<MediaStreamInterface> CreateMediaStream( |
const std::string& stream_label) { |
@@ -400,15 +398,6 @@ class RemoteMediaStreamFactory { |
stream, track_id, RemoteAudioSource::Create(ssrc, provider)); |
} |
- VideoTrackInterface* AddVideoTrack(webrtc::MediaStreamInterface* stream, |
- const std::string& track_id) { |
- return AddTrack<VideoTrackInterface, VideoTrack, VideoTrackProxy>( |
- stream, track_id, |
- VideoCapturerTrackSource::Create( |
- worker_thread_, new RemoteVideoCapturer(), nullptr, true) |
- .get()); |
- } |
- |
private: |
template <typename TI, typename T, typename TP, typename S> |
TI* AddTrack(MediaStreamInterface* stream, |
@@ -424,7 +413,6 @@ class RemoteMediaStreamFactory { |
} |
rtc::Thread* signaling_thread_; |
- rtc::Thread* worker_thread_; |
}; |
bool ExtractMediaSessionOptions( |
@@ -611,8 +599,8 @@ bool PeerConnection::Initialize( |
media_controller_.reset(factory_->CreateMediaController(media_config)); |
- remote_stream_factory_.reset(new RemoteMediaStreamFactory( |
- factory_->signaling_thread(), factory_->worker_thread())); |
+ remote_stream_factory_.reset( |
+ new RemoteMediaStreamFactory(factory_->signaling_thread())); |
session_.reset( |
new WebRtcSession(media_controller_.get(), factory_->signaling_thread(), |
@@ -1324,12 +1312,15 @@ void PeerConnection::CreateAudioReceiver(MediaStreamInterface* stream, |
new AudioRtpReceiver(audio_track, ssrc, session_.get()))); |
} |
-void PeerConnection::CreateVideoReceiver(MediaStreamInterface* stream, |
- VideoTrackInterface* video_track, |
- uint32_t ssrc) { |
- receivers_.push_back(RtpReceiverProxy::Create( |
- signaling_thread(), |
- new VideoRtpReceiver(video_track, ssrc, session_.get()))); |
+VideoRtpReceiver* PeerConnection::CreateVideoReceiver( |
+ const std::string& track_id, |
+ uint32_t ssrc) { |
+ VideoRtpReceiver* video_receiver = new VideoRtpReceiver( |
+ track_id, factory_->worker_thread(), ssrc, session_.get()); |
+ // RtpReceiverProxy takes ownership of |video_receiver|; |
+ receivers_.push_back( |
+ RtpReceiverProxy::Create(signaling_thread(), video_receiver)); |
+ return video_receiver; |
pthatcher1
2016/03/09 18:16:49
Why do we keep ownership of the proxy but then ret
perkj_webrtc
2016/03/09 21:22:59
That is my attempt to avoid a static cast and to b
Taylor Brandstetter
2016/03/09 22:10:41
I assume you mean "return an RtpReceiverInterface"
perkj_webrtc
2016/03/10 00:26:38
that is a very good idea.
|
} |
// TODO(deadbeef): Keep RtpReceivers around even if track goes away in remote |
@@ -1677,9 +1668,8 @@ void PeerConnection::OnRemoteTrackSeen(const std::string& stream_label, |
ssrc, session_.get(), stream, track_id); |
CreateAudioReceiver(stream, audio_track, ssrc); |
} else if (media_type == cricket::MEDIA_TYPE_VIDEO) { |
- VideoTrackInterface* video_track = |
- remote_stream_factory_->AddVideoTrack(stream, track_id); |
- CreateVideoReceiver(stream, video_track, ssrc); |
+ VideoRtpReceiver* receiver = CreateVideoReceiver(track_id, ssrc); |
+ stream->AddTrack(receiver->video_track()); |
} else { |
RTC_DCHECK(false && "Invalid media type"); |
} |
@@ -1702,7 +1692,6 @@ void PeerConnection::OnRemoteTrackRemoved(const std::string& stream_label, |
rtc::scoped_refptr<VideoTrackInterface> video_track = |
stream->FindVideoTrack(track_id); |
if (video_track) { |
- video_track->set_state(webrtc::MediaStreamTrackInterface::kEnded); |
stream->RemoveTrack(video_track); |
DestroyVideoReceiver(stream, video_track); |
pthatcher1
2016/03/09 18:16:49
Can you put a comment here saying "Stopping or des
perkj_webrtc
2016/03/09 21:22:59
Done.
|
} |