Remove MediaChannel::SetRemoteRenderer().

This is following discussion in: https://codereview.webrtc.org/1385893002/diff/60001/talk/media/webrtc/webrtcvoiceengine.cc#newcode2410

BUG=webrtc:4690

Review URL: https://codereview.webrtc.org/1398823003

Cr-Commit-Position: refs/heads/master@{#10237}
This commit is contained in:
solenberg
2015-10-09 08:55:48 -07:00
committed by Commit bot
parent e5295aa46a
commit d4cec0d8fa
12 changed files with 15 additions and 79 deletions

View File

@ -55,9 +55,7 @@ namespace webrtc {
class AudioProviderInterface {
public:
// Enable/disable the audio playout of a remote audio track with |ssrc|.
virtual void SetAudioPlayout(uint32_t ssrc,
bool enable,
cricket::AudioRenderer* renderer) = 0;
virtual void SetAudioPlayout(uint32_t ssrc, bool enable) = 0;
// Enable/disable sending audio on the local audio track with |ssrc|.
// When |enable| is true |options| should be applied to the audio track.
virtual void SetAudioSend(uint32_t ssrc,

View File

@ -70,7 +70,7 @@ void AudioRtpReceiver::Stop() {
if (!provider_) {
return;
}
provider_->SetAudioPlayout(ssrc_, false, nullptr);
provider_->SetAudioPlayout(ssrc_, false);
provider_ = nullptr;
}
@ -78,7 +78,7 @@ void AudioRtpReceiver::Reconfigure() {
if (!provider_) {
return;
}
provider_->SetAudioPlayout(ssrc_, track_->enabled(), track_->GetRenderer());
provider_->SetAudioPlayout(ssrc_, track_->enabled());
}
VideoRtpReceiver::VideoRtpReceiver(VideoTrackInterface* track,

View File

@ -56,10 +56,9 @@ namespace webrtc {
class MockAudioProvider : public AudioProviderInterface {
public:
virtual ~MockAudioProvider() {}
MOCK_METHOD3(SetAudioPlayout,
MOCK_METHOD2(SetAudioPlayout,
void(uint32_t ssrc,
bool enable,
cricket::AudioRenderer* renderer));
bool enable));
MOCK_METHOD4(SetAudioSend,
void(uint32_t ssrc,
bool enable,
@ -150,7 +149,7 @@ class RtpSenderReceiverTest : public testing::Test {
audio_track_ =
AudioTrack::Create(kAudioTrackId, RemoteAudioSource::Create().get());
EXPECT_TRUE(stream_->AddTrack(audio_track_));
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true, _));
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true));
audio_rtp_receiver_ = new AudioRtpReceiver(stream_->GetAudioTracks()[0],
kAudioSsrc, &audio_provider_);
}
@ -164,7 +163,7 @@ class RtpSenderReceiverTest : public testing::Test {
}
void DestroyAudioRtpReceiver() {
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false, _));
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false));
audio_rtp_receiver_ = nullptr;
}
@ -228,10 +227,10 @@ TEST_F(RtpSenderReceiverTest, LocalAudioTrackDisable) {
TEST_F(RtpSenderReceiverTest, RemoteAudioTrackDisable) {
CreateAudioRtpReceiver();
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false, _));
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false));
audio_track_->set_enabled(false);
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true, _));
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true));
audio_track_->set_enabled(true);
DestroyAudioRtpReceiver();
@ -267,11 +266,11 @@ TEST_F(RtpSenderReceiverTest, RemoteAudioTrackSetVolume) {
audio_track_->GetSource()->SetVolume(volume);
// Disable the audio track, this should prevent setting the volume.
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false, _));
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false));
audio_track_->set_enabled(false);
audio_track_->GetSource()->SetVolume(1.0);
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true, _));
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true));
audio_track_->set_enabled(true);
double new_volume = 0.8;

View File

@ -1233,19 +1233,12 @@ std::string WebRtcSession::BadStateErrMsg(State state) {
return desc.str();
}
void WebRtcSession::SetAudioPlayout(uint32_t ssrc,
bool enable,
cricket::AudioRenderer* renderer) {
void WebRtcSession::SetAudioPlayout(uint32_t ssrc, bool enable) {
ASSERT(signaling_thread()->IsCurrent());
if (!voice_channel_) {
LOG(LS_ERROR) << "SetAudioPlayout: No audio channel exists.";
return;
}
if (!voice_channel_->SetRemoteRenderer(ssrc, renderer)) {
// SetRenderer() can fail if the ssrc does not match any playout channel.
LOG(LS_ERROR) << "SetAudioPlayout: ssrc is incorrect: " << ssrc;
return;
}
if (!voice_channel_->SetOutputVolume(ssrc, enable ? 1 : 0)) {
// Allow that SetOutputVolume fail if |enable| is false but assert
// otherwise. This in the normal case when the underlying media channel has

View File

@ -202,9 +202,7 @@ class WebRtcSession : public cricket::BaseSession,
virtual bool GetRemoteTrackIdBySsrc(uint32_t ssrc, std::string* track_id);
// AudioMediaProviderInterface implementation.
void SetAudioPlayout(uint32_t ssrc,
bool enable,
cricket::AudioRenderer* renderer) override;
void SetAudioPlayout(uint32_t ssrc, bool enable) override;
void SetAudioSend(uint32_t ssrc,
bool enable,
const cricket::AudioOptions& options,

View File

@ -3101,11 +3101,10 @@ TEST_F(WebRtcSessionTest, SetAudioPlayout) {
double volume;
EXPECT_TRUE(channel->GetOutputVolume(receive_ssrc, &volume));
EXPECT_EQ(1, volume);
rtc::scoped_ptr<FakeAudioRenderer> renderer(new FakeAudioRenderer());
session_->SetAudioPlayout(receive_ssrc, false, renderer.get());
session_->SetAudioPlayout(receive_ssrc, false);
EXPECT_TRUE(channel->GetOutputVolume(receive_ssrc, &volume));
EXPECT_EQ(0, volume);
session_->SetAudioPlayout(receive_ssrc, true, NULL);
session_->SetAudioPlayout(receive_ssrc, true);
EXPECT_TRUE(channel->GetOutputVolume(receive_ssrc, &volume));
EXPECT_EQ(1, volume);
}

View File

@ -300,24 +300,6 @@ class FakeVoiceMediaChannel : public RtpHelper<VoiceMediaChannel> {
output_scalings_.erase(ssrc);
return true;
}
virtual bool SetRemoteRenderer(uint32_t ssrc, AudioRenderer* renderer) {
std::map<uint32_t, AudioRenderer*>::iterator it =
remote_renderers_.find(ssrc);
if (renderer) {
if (it != remote_renderers_.end()) {
ASSERT(it->second == renderer);
} else {
remote_renderers_.insert(std::make_pair(ssrc, renderer));
}
} else {
if (it != remote_renderers_.end()) {
remote_renderers_.erase(it);
} else {
return false;
}
}
return true;
}
virtual bool GetActiveStreams(AudioInfo::StreamList* streams) { return true; }
virtual int GetOutputLevel() { return 0; }
@ -439,7 +421,6 @@ class FakeVoiceMediaChannel : public RtpHelper<VoiceMediaChannel> {
int time_since_last_typing_;
AudioOptions options_;
std::map<uint32_t, VoiceChannelAudioSink*> local_renderers_;
std::map<uint32_t, AudioRenderer*> remote_renderers_;
};
// A helper function to compare the FakeVoiceMediaChannel::DtmfInfo.

View File

@ -1055,8 +1055,6 @@ class VoiceMediaChannel : public MediaChannel {
bool enable,
const AudioOptions* options,
AudioRenderer* renderer) = 0;
// Sets the renderer object to be used for the specified remote audio stream.
virtual bool SetRemoteRenderer(uint32_t ssrc, AudioRenderer* renderer) = 0;
// Gets current energy levels for all incoming streams.
virtual bool GetActiveStreams(AudioInfo::StreamList* actives) = 0;
// Get the current energy level of the stream sent to the speaker.

View File

@ -2389,29 +2389,6 @@ bool WebRtcVoiceMediaChannel::RemoveRecvStream(uint32_t ssrc) {
return true;
}
bool WebRtcVoiceMediaChannel::SetRemoteRenderer(uint32_t ssrc,
AudioRenderer* renderer) {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
ChannelMap::iterator it = receive_channels_.find(ssrc);
if (it == receive_channels_.end()) {
if (renderer) {
// Return an error if trying to set a valid renderer with an invalid ssrc.
LOG(LS_ERROR) << "SetRemoteRenderer failed with ssrc "<< ssrc;
return false;
}
// The channel likely has gone away, do nothing.
return true;
}
if (renderer)
it->second->Start(renderer);
else
it->second->Stop();
return true;
}
bool WebRtcVoiceMediaChannel::SetLocalRenderer(uint32_t ssrc,
AudioRenderer* renderer) {
ChannelMap::iterator it = send_channels_.find(ssrc);

View File

@ -200,7 +200,6 @@ class WebRtcVoiceMediaChannel : public VoiceMediaChannel,
bool RemoveSendStream(uint32_t ssrc) override;
bool AddRecvStream(const StreamParams& sp) override;
bool RemoveRecvStream(uint32_t ssrc) override;
bool SetRemoteRenderer(uint32_t ssrc, AudioRenderer* renderer) override;
bool GetActiveStreams(AudioInfo::StreamList* actives) override;
int GetOutputLevel() override;
int GetTimeSinceLastTyping() override;

View File

@ -1296,11 +1296,6 @@ bool VoiceChannel::Init() {
return true;
}
bool VoiceChannel::SetRemoteRenderer(uint32_t ssrc, AudioRenderer* renderer) {
return InvokeOnWorker(Bind(&VoiceMediaChannel::SetRemoteRenderer,
media_channel(), ssrc, renderer));
}
bool VoiceChannel::SetAudioSend(uint32_t ssrc,
bool enable,
const AudioOptions* options,

View File

@ -335,7 +335,6 @@ class VoiceChannel : public BaseChannel {
bool rtcp);
~VoiceChannel();
bool Init();
bool SetRemoteRenderer(uint32_t ssrc, AudioRenderer* renderer);
// Configure sending media on the stream with SSRC |ssrc|
// If there is only one sending stream SSRC 0 can be used.