aboutsummaryrefslogtreecommitdiff
path: root/talk/media
diff options
context:
space:
mode:
authortorbjorng <torbjorng@webrtc.org>2015-10-08 13:10:36 -0700
committerCommit bot <commit-bot@chromium.org>2015-10-08 20:10:40 +0000
commiteefbc3bbd7a6962265b028cf259b5028944561d1 (patch)
treefb9bd0518316bcb3275ab221a2ee7da340aaba4d /talk/media
parentf0159a742f39fe746053430a04b844ef2ead0770 (diff)
downloadwebrtc-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.h14
-rw-r--r--talk/media/base/fakemediaengine.h4
-rw-r--r--talk/media/webrtc/webrtcvoiceengine.cc14
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.