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

Unified Diff: webrtc/api/rtpreceiver.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/rtpreceiver.h ('k') | webrtc/api/rtpsenderreceiver_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/rtpreceiver.cc
diff --git a/webrtc/api/rtpreceiver.cc b/webrtc/api/rtpreceiver.cc
index 0ad5218fafd122c22c37f904dcc21109449a91aa..15906120f6d431fbb3e0bec5406062163630c18e 100644
--- a/webrtc/api/rtpreceiver.cc
+++ b/webrtc/api/rtpreceiver.cc
@@ -10,7 +10,8 @@
#include "webrtc/api/rtpreceiver.h"
-#include "webrtc/api/videosourceinterface.h"
+#include "webrtc/api/mediastreamtrackproxy.h"
+#include "webrtc/api/videotrack.h"
namespace webrtc {
@@ -65,11 +66,27 @@ void AudioRtpReceiver::Reconfigure() {
provider_->SetAudioPlayout(ssrc_, track_->enabled());
}
-VideoRtpReceiver::VideoRtpReceiver(VideoTrackInterface* track,
+VideoRtpReceiver::VideoRtpReceiver(MediaStreamInterface* stream,
+ const std::string& track_id,
+ rtc::Thread* worker_thread,
uint32_t ssrc,
VideoProviderInterface* provider)
- : id_(track->id()), track_(track), ssrc_(ssrc), provider_(provider) {
- provider_->SetVideoPlayout(ssrc_, true, track_->GetSink());
+ : id_(track_id),
+ ssrc_(ssrc),
+ provider_(provider),
+ source_(new RefCountedObject<VideoTrackSource>(&broadcaster_,
+ worker_thread,
+ true /* remote */)),
+ track_(VideoTrackProxy::Create(
+ rtc::Thread::Current(),
+ VideoTrack::Create(track_id, source_.get()))) {
+ source_->SetState(MediaSourceInterface::kLive);
+ // TODO(perkj): It should be enough to set the source state. All tracks
+ // belonging to the same source should get its state from the source.
+ // I.e. if a track has been cloned from a remote source.
+ track_->set_state(webrtc::MediaStreamTrackInterface::kLive);
+ provider_->SetVideoPlayout(ssrc_, true, &broadcaster_);
+ stream->AddTrack(track_);
}
VideoRtpReceiver::~VideoRtpReceiver() {
@@ -83,6 +100,11 @@ void VideoRtpReceiver::Stop() {
if (!provider_) {
return;
}
+ source_->SetState(MediaSourceInterface::kEnded);
+ source_->OnSourceDestroyed();
+ // TODO(perkj): It should be enough to set the source state. All tracks
+ // belonging to the same source should get its state from the source.
+ track_->set_state(MediaStreamTrackInterface::kEnded);
provider_->SetVideoPlayout(ssrc_, false, nullptr);
provider_ = nullptr;
}
« no previous file with comments | « webrtc/api/rtpreceiver.h ('k') | webrtc/api/rtpsenderreceiver_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698