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:
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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.
|
||||
|
Reference in New Issue
Block a user