| 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));
|
|
|