Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Unified Diff: webrtc/api/peerconnection.cc

Issue 1765423005: Change VideoRtpReceiver to create remote VideoTrack and VideoTrackSource. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixed up the comments. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/api/peerconnection.h ('k') | webrtc/api/remotevideocapturer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/peerconnection.cc
diff --git a/webrtc/api/peerconnection.cc b/webrtc/api/peerconnection.cc
index c2039aeea414321e612e461d635df72e486904a3..700714ae44be662dc052b4aec0416b733ed47a7d 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(),
@@ -1325,11 +1313,12 @@ void PeerConnection::CreateAudioReceiver(MediaStreamInterface* stream,
}
void PeerConnection::CreateVideoReceiver(MediaStreamInterface* stream,
- VideoTrackInterface* video_track,
+ const std::string& track_id,
uint32_t ssrc) {
- receivers_.push_back(RtpReceiverProxy::Create(
- signaling_thread(),
- new VideoRtpReceiver(video_track, ssrc, session_.get())));
+ VideoRtpReceiver* video_receiver = new VideoRtpReceiver(
+ stream, track_id, factory_->worker_thread(), ssrc, session_.get());
+ receivers_.push_back(
+ RtpReceiverProxy::Create(signaling_thread(), video_receiver));
}
// TODO(deadbeef): Keep RtpReceivers around even if track goes away in remote
@@ -1677,9 +1666,7 @@ 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);
+ CreateVideoReceiver(stream, track_id, ssrc);
} else {
RTC_DCHECK(false && "Invalid media type");
}
@@ -1702,8 +1689,9 @@ 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);
+ // Stopping or destroying a VideoRtpReceiver will end the
+ // VideoRtpReceiver::track().
DestroyVideoReceiver(stream, video_track);
}
} else {
« no previous file with comments | « webrtc/api/peerconnection.h ('k') | webrtc/api/remotevideocapturer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698