diff options
author | torbjorng <torbjorng@webrtc.org> | 2015-10-08 13:10:36 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-10-08 20:10:40 +0000 |
commit | eefbc3bbd7a6962265b028cf259b5028944561d1 (patch) | |
tree | fb9bd0518316bcb3275ab221a2ee7da340aaba4d /talk/media | |
parent | f0159a742f39fe746053430a04b844ef2ead0770 (diff) | |
download | webrtc-eefbc3bbd7a6962265b028cf259b5028944561d1.tar.gz |
Revert of Remove AudioTrackRenderer (patchset #3 id:40001 of https://codereview.webrtc.org/1399553003/ )
Reason for revert:
Breaks Chrome since its build files were not updated prior to file removal.
Original issue's description:
> - Remove AudioTrackRenderer.
> - Remove AddChannel/RemoveChannel from AudioRenderer interface.
>
> BUG=webrtc:4690
>
> Committed: https://crrev.com/1c0bb386b67835feb5934f503dddfe0912bce3ac
> Cr-Commit-Position: refs/heads/master@{#10226}
TBR=tommi@webrtc.org,solenberg@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:4690
Review URL: https://codereview.webrtc.org/1393343003
Cr-Commit-Position: refs/heads/master@{#10228}
Diffstat (limited to 'talk/media')
-rw-r--r-- | talk/media/base/audiorenderer.h | 14 | ||||
-rw-r--r-- | talk/media/base/fakemediaengine.h | 4 | ||||
-rw-r--r-- | talk/media/webrtc/webrtcvoiceengine.cc | 14 |
3 files changed, 28 insertions, 4 deletions
diff --git a/talk/media/base/audiorenderer.h b/talk/media/base/audiorenderer.h index 229c36e8b1..5c03576fa7 100644 --- a/talk/media/base/audiorenderer.h +++ b/talk/media/base/audiorenderer.h @@ -55,6 +55,20 @@ class AudioRenderer { // to the renderer at a time. virtual void SetSink(Sink* sink) {} + // Add the WebRtc VoE channel to the renderer. + // For local stream, multiple WebRtc VoE channels can be connected to the + // renderer. While for remote stream, only one WebRtc VoE channel can be + // connected to the renderer. + // TODO(xians): Remove this interface after Chrome switches to the + // AudioRenderer::Sink interface. + virtual void AddChannel(int channel_id) {} + + // Remove the WebRtc VoE channel from the renderer. + // This method is called when the VoE channel is going away. + // TODO(xians): Remove this interface after Chrome switches to the + // AudioRenderer::Sink interface. + virtual void RemoveChannel(int channel_id) {} + protected: virtual ~AudioRenderer() {} }; diff --git a/talk/media/base/fakemediaengine.h b/talk/media/base/fakemediaengine.h index e5c4c53241..7325667aa5 100644 --- a/talk/media/base/fakemediaengine.h +++ b/talk/media/base/fakemediaengine.h @@ -308,9 +308,11 @@ class FakeVoiceMediaChannel : public RtpHelper<VoiceMediaChannel> { ASSERT(it->second == renderer); } else { remote_renderers_.insert(std::make_pair(ssrc, renderer)); + renderer->AddChannel(0); } } else { if (it != remote_renderers_.end()) { + it->second->RemoveChannel(0); remote_renderers_.erase(it); } else { return false; @@ -380,10 +382,12 @@ class FakeVoiceMediaChannel : public RtpHelper<VoiceMediaChannel> { public: explicit VoiceChannelAudioSink(AudioRenderer* renderer) : renderer_(renderer) { + renderer_->AddChannel(0); renderer_->SetSink(this); } virtual ~VoiceChannelAudioSink() { if (renderer_) { + renderer_->RemoveChannel(0); renderer_->SetSink(NULL); } } diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc index db22b41fc0..54fac221d8 100644 --- a/talk/media/webrtc/webrtcvoiceengine.cc +++ b/talk/media/webrtc/webrtcvoiceengine.cc @@ -1305,6 +1305,10 @@ class WebRtcVoiceMediaChannel::WebRtcVoiceChannelRenderer RTC_DCHECK(renderer_ == renderer); return; } + + // TODO(xians): Remove AddChannel() call after Chrome turns on APM + // in getUserMedia by default. + renderer->AddChannel(channel_); renderer->SetSink(this); renderer_ = renderer; } @@ -1314,10 +1318,12 @@ class WebRtcVoiceMediaChannel::WebRtcVoiceChannelRenderer // This method is called on the libjingle worker thread. void Stop() { rtc::CritScope lock(&lock_); - if (renderer_ != NULL) { - renderer_->SetSink(NULL); - renderer_ = NULL; - } + if (renderer_ == NULL) + return; + + renderer_->RemoveChannel(channel_); + renderer_->SetSink(NULL); + renderer_ = NULL; } // AudioRenderer::Sink implementation. |