diff options
Diffstat (limited to 'pc/peer_connection_simulcast_unittest.cc')
-rw-r--r-- | pc/peer_connection_simulcast_unittest.cc | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/pc/peer_connection_simulcast_unittest.cc b/pc/peer_connection_simulcast_unittest.cc index 8822a980f7..31385754b7 100644 --- a/pc/peer_connection_simulcast_unittest.cc +++ b/pc/peer_connection_simulcast_unittest.cc @@ -157,9 +157,10 @@ class PeerConnectionSimulcastTests : public ::testing::Test { rtc::scoped_refptr<RtpTransceiverInterface> AddTransceiver( PeerConnectionWrapper* pc, - const std::vector<SimulcastLayer>& layers) { + const std::vector<SimulcastLayer>& layers, + cricket::MediaType media_type = cricket::MEDIA_TYPE_VIDEO) { auto init = CreateTransceiverInit(layers); - return pc->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init); + return pc->AddTransceiver(media_type, init); } SimulcastDescription RemoveSimulcast(SessionDescriptionInterface* sd) { @@ -556,6 +557,25 @@ TEST_F(PeerConnectionSimulcastTests, NegotiationDoesNotHaveRidExtension) { ValidateTransceiverParameters(transceiver, expected_layers); } +TEST_F(PeerConnectionSimulcastTests, SimulcastAudioRejected) { + auto local = CreatePeerConnectionWrapper(); + auto remote = CreatePeerConnectionWrapper(); + auto layers = CreateLayers({"1", "2", "3", "4"}, true); + auto transceiver = + AddTransceiver(local.get(), layers, cricket::MEDIA_TYPE_AUDIO); + // Should only have the first layer. + auto parameters = transceiver->sender()->GetParameters(); + EXPECT_EQ(1u, parameters.encodings.size()); + EXPECT_THAT(parameters.encodings, + ElementsAre(Field("rid", &RtpEncodingParameters::rid, Eq("")))); + ExchangeOfferAnswer(local.get(), remote.get(), {}); + // Still have a single layer after negotiation + parameters = transceiver->sender()->GetParameters(); + EXPECT_EQ(1u, parameters.encodings.size()); + EXPECT_THAT(parameters.encodings, + ElementsAre(Field("rid", &RtpEncodingParameters::rid, Eq("")))); +} + #if RTC_METRICS_ENABLED // // Checks the logged metrics when simulcast is not used. |