Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(775)

Unified Diff: talk/media/webrtc/webrtcvoiceengine_unittest.cc

Issue 1551813002: Storing raw audio sink for default audio track. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Removing obsolete "RefCountedObject" and adding an RTC_DCHECK. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « talk/media/webrtc/webrtcvoiceengine.cc ('k') | webrtc/audio_receive_stream.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: talk/media/webrtc/webrtcvoiceengine_unittest.cc
diff --git a/talk/media/webrtc/webrtcvoiceengine_unittest.cc b/talk/media/webrtc/webrtcvoiceengine_unittest.cc
index a62bcb225fc7c6111fed44c0a43507f1ecf7b353..2d272fc6d4178602884bcaeb1a5df80a9e73eb87 100644
--- a/talk/media/webrtc/webrtcvoiceengine_unittest.cc
+++ b/talk/media/webrtc/webrtcvoiceengine_unittest.cc
@@ -72,6 +72,11 @@ class FakeVoEWrapper : public cricket::VoEWrapper {
};
} // namespace
+class FakeAudioSink : public webrtc::AudioSinkInterface {
+ public:
+ void OnData(const Data& audio) override {}
+};
+
class WebRtcVoiceEngineTestFake : public testing::Test {
public:
WebRtcVoiceEngineTestFake()
@@ -125,6 +130,12 @@ class WebRtcVoiceEngineTestFake : public testing::Test {
return *send_stream;
}
+ const cricket::FakeAudioReceiveStream& GetRecvStream(uint32_t ssrc) {
+ const auto* recv_stream = call_.GetAudioReceiveStream(ssrc);
+ EXPECT_TRUE(recv_stream);
+ return *recv_stream;
+ }
+
const webrtc::AudioSendStream::Config& GetSendStreamConfig(uint32_t ssrc) {
const auto* send_stream = call_.GetAudioSendStream(ssrc);
EXPECT_TRUE(send_stream);
@@ -3105,6 +3116,52 @@ TEST_F(WebRtcVoiceEngineTestFake, AssociateChannelResetUponDeleteChannnel) {
EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), -1);
}
+TEST_F(WebRtcVoiceEngineTestFake, SetRawAudioSink) {
+ EXPECT_TRUE(SetupEngine());
+ rtc::scoped_ptr<FakeAudioSink> fake_sink_1(new FakeAudioSink());
+ rtc::scoped_ptr<FakeAudioSink> fake_sink_2(new FakeAudioSink());
+
+ // Setting the sink before a recv stream exists should do nothing.
+ channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_1));
+ EXPECT_TRUE(
+ channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc1)));
+ EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink());
+
+ // Now try actually setting the sink.
+ channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_2));
+ EXPECT_NE(nullptr, GetRecvStream(kSsrc1).sink());
+
+ // Now try resetting it.
+ channel_->SetRawAudioSink(kSsrc1, nullptr);
+ EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink());
+}
+
+TEST_F(WebRtcVoiceEngineTestFake, SetRawAudioSinkDefaultRecvStream) {
+ EXPECT_TRUE(SetupEngine());
+ rtc::scoped_ptr<FakeAudioSink> fake_sink_1(new FakeAudioSink());
+ rtc::scoped_ptr<FakeAudioSink> fake_sink_2(new FakeAudioSink());
+
+ // Should be able to set a default sink even when no stream exists.
+ channel_->SetRawAudioSink(0, std::move(fake_sink_1));
+
+ // Create default channel and ensure it's assigned the default sink.
+ DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame));
+ EXPECT_NE(nullptr, GetRecvStream(0x01).sink());
+
+ // Try resetting the default sink.
+ channel_->SetRawAudioSink(0, nullptr);
+ EXPECT_EQ(nullptr, GetRecvStream(0x01).sink());
+
+ // Try setting the default sink while the default stream exists.
+ channel_->SetRawAudioSink(0, std::move(fake_sink_2));
+ EXPECT_NE(nullptr, GetRecvStream(0x01).sink());
+
+ // If we remove and add a default stream, it should get the same sink.
+ EXPECT_TRUE(channel_->RemoveRecvStream(0x01));
+ DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame));
+ EXPECT_NE(nullptr, GetRecvStream(0x01).sink());
+}
+
// Tests that the library initializes and shuts down properly.
TEST(WebRtcVoiceEngineTest, StartupShutdown) {
cricket::WebRtcVoiceEngine engine;
« no previous file with comments | « talk/media/webrtc/webrtcvoiceengine.cc ('k') | webrtc/audio_receive_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698