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

Unified Diff: talk/app/webrtc/mediastreamhandler.cc

Issue 1231613002: Fixing scenario where track is rejected and later un-rejected. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Removing obsolete method Created 5 years, 5 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 | « talk/app/webrtc/mediastreamhandler.h ('k') | talk/app/webrtc/mediastreamsignaling.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: talk/app/webrtc/mediastreamhandler.cc
diff --git a/talk/app/webrtc/mediastreamhandler.cc b/talk/app/webrtc/mediastreamhandler.cc
index f68699d6298c40bc6c6e111035ad6abc362652df..08be35ec865e080bccffc76368f934aa7f343035 100644
--- a/talk/app/webrtc/mediastreamhandler.cc
+++ b/talk/app/webrtc/mediastreamhandler.cc
@@ -90,7 +90,7 @@ LocalAudioTrackHandler::LocalAudioTrackHandler(
audio_track_(track),
provider_(provider),
sink_adapter_(new LocalAudioSinkAdapter()) {
- OnEnabledChanged();
+ Start();
track->AddSink(sink_adapter_.get());
}
@@ -101,6 +101,10 @@ void LocalAudioTrackHandler::OnStateChanged() {
// TODO(perkj): What should happen when the state change?
}
+void LocalAudioTrackHandler::Start() {
+ OnEnabledChanged();
+}
+
void LocalAudioTrackHandler::Stop() {
audio_track_->RemoveSink(sink_adapter_.get());
cricket::AudioOptions options;
@@ -132,13 +136,19 @@ RemoteAudioTrackHandler::RemoteAudioTrackHandler(
audio_track_(track),
provider_(provider) {
track->GetSource()->RegisterAudioObserver(this);
- OnEnabledChanged();
+ Start();
}
RemoteAudioTrackHandler::~RemoteAudioTrackHandler() {
audio_track_->GetSource()->UnregisterAudioObserver(this);
}
+void RemoteAudioTrackHandler::Start() {
+ // TODO(deadbeef) - Should we remember the audio playout volume last set,
+ // and set it again in case the audio channel was destroyed and recreated?
+ OnEnabledChanged();
+}
+
void RemoteAudioTrackHandler::Stop() {
provider_->SetAudioPlayout(ssrc(), false, NULL);
}
@@ -166,10 +176,7 @@ LocalVideoTrackHandler::LocalVideoTrackHandler(
: TrackHandler(track, ssrc),
local_video_track_(track),
provider_(provider) {
- VideoSourceInterface* source = local_video_track_->GetSource();
- if (source)
- provider_->SetCaptureDevice(ssrc, source->GetVideoCapturer());
- OnEnabledChanged();
+ Start();
}
LocalVideoTrackHandler::~LocalVideoTrackHandler() {
@@ -178,6 +185,13 @@ LocalVideoTrackHandler::~LocalVideoTrackHandler() {
void LocalVideoTrackHandler::OnStateChanged() {
}
+void LocalVideoTrackHandler::Start() {
+ VideoSourceInterface* source = local_video_track_->GetSource();
+ if (source)
+ provider_->SetCaptureDevice(ssrc(), source->GetVideoCapturer());
+ OnEnabledChanged();
+}
+
void LocalVideoTrackHandler::Stop() {
provider_->SetCaptureDevice(ssrc(), NULL);
provider_->SetVideoSend(ssrc(), false, NULL);
@@ -199,14 +213,18 @@ RemoteVideoTrackHandler::RemoteVideoTrackHandler(
: TrackHandler(track, ssrc),
remote_video_track_(track),
provider_(provider) {
- OnEnabledChanged();
- provider_->SetVideoPlayout(ssrc, true,
- remote_video_track_->GetSource()->FrameInput());
+ Start();
}
RemoteVideoTrackHandler::~RemoteVideoTrackHandler() {
}
+void RemoteVideoTrackHandler::Start() {
+ OnEnabledChanged();
+ provider_->SetVideoPlayout(ssrc(), true,
+ remote_video_track_->GetSource()->FrameInput());
+}
+
void RemoteVideoTrackHandler::Stop() {
// Since cricket::VideoRenderer is not reference counted
// we need to remove the renderer before we are deleted.
@@ -301,6 +319,12 @@ void LocalMediaStreamHandler::AddVideoTrack(VideoTrackInterface* video_track,
track_handlers_.push_back(handler);
}
+void LocalMediaStreamHandler::RestartAllTracks() {
+ for (auto it : track_handlers_) {
+ it->Start();
+ }
+}
+
RemoteMediaStreamHandler::RemoteMediaStreamHandler(
MediaStreamInterface* stream,
AudioProviderInterface* audio_provider,
@@ -327,6 +351,12 @@ void RemoteMediaStreamHandler::AddVideoTrack(VideoTrackInterface* video_track,
track_handlers_.push_back(handler);
}
+void RemoteMediaStreamHandler::RestartAllTracks() {
+ for (auto it : track_handlers_) {
+ it->Start();
+ }
+}
+
MediaStreamHandlerContainer::MediaStreamHandlerContainer(
AudioProviderInterface* audio_provider,
VideoProviderInterface* video_provider)
@@ -396,6 +426,12 @@ void MediaStreamHandlerContainer::RemoveRemoteTrack(
handler->RemoveTrack(track);
}
+void MediaStreamHandlerContainer::RestartAllRemoteTracks() {
+ for (auto it : remote_streams_handlers_) {
+ it->RestartAllTracks();
+ }
+}
+
void MediaStreamHandlerContainer::RemoveLocalStream(
MediaStreamInterface* stream) {
DeleteStreamHandler(&local_streams_handlers_, stream);
@@ -438,6 +474,12 @@ void MediaStreamHandlerContainer::RemoveLocalTrack(
handler->RemoveTrack(track);
}
+void MediaStreamHandlerContainer::RestartAllLocalTracks() {
+ for (auto it : local_streams_handlers_) {
+ it->RestartAllTracks();
+ }
+}
+
MediaStreamHandler* MediaStreamHandlerContainer::CreateRemoteStreamHandler(
MediaStreamInterface* stream) {
ASSERT(!FindStreamHandler(remote_streams_handlers_, stream));
« no previous file with comments | « talk/app/webrtc/mediastreamhandler.h ('k') | talk/app/webrtc/mediastreamsignaling.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698