| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 EXPECT_TRUE(it != rtx_types.end() && | 104 EXPECT_TRUE(it != rtx_types.end() && |
| 105 it->second == config.rtp.ulpfec.red_rtx_payload_type); | 105 it->second == config.rtp.ulpfec.red_rtx_payload_type); |
| 106 } | 106 } |
| 107 } | 107 } |
| 108 | 108 |
| 109 cricket::MediaConfig GetMediaConfig() { | 109 cricket::MediaConfig GetMediaConfig() { |
| 110 cricket::MediaConfig media_config; | 110 cricket::MediaConfig media_config; |
| 111 media_config.video.enable_cpu_overuse_detection = false; | 111 media_config.video.enable_cpu_overuse_detection = false; |
| 112 return media_config; | 112 return media_config; |
| 113 } | 113 } |
| 114 |
| 115 // TODO(nisse): Duplicated in call.cc. |
| 116 const int* FindKeyByValue(const std::map<int, int>& m, int v) { |
| 117 for (const auto& kv : m) { |
| 118 if (kv.second == v) |
| 119 return &kv.first; |
| 120 } |
| 121 return nullptr; |
| 122 } |
| 123 |
| 114 } // namespace | 124 } // namespace |
| 115 | 125 |
| 116 namespace cricket { | 126 namespace cricket { |
| 117 class WebRtcVideoEngineTest : public ::testing::Test { | 127 class WebRtcVideoEngineTest : public ::testing::Test { |
| 118 public: | 128 public: |
| 119 WebRtcVideoEngineTest() : WebRtcVideoEngineTest("") {} | 129 WebRtcVideoEngineTest() : WebRtcVideoEngineTest("") {} |
| 120 explicit WebRtcVideoEngineTest(const char* field_trials) | 130 explicit WebRtcVideoEngineTest(const char* field_trials) |
| 121 : override_field_trials_(field_trials), | 131 : override_field_trials_(field_trials), |
| 122 call_(webrtc::Call::Create(webrtc::Call::Config(&event_log_))), | 132 call_(webrtc::Call::Create(webrtc::Call::Config(&event_log_))), |
| 123 engine_() { | 133 engine_() { |
| (...skipping 1173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1297 FakeVideoSendStream* send_stream = AddSendStream( | 1307 FakeVideoSendStream* send_stream = AddSendStream( |
| 1298 cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); | 1308 cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); |
| 1299 | 1309 |
| 1300 ASSERT_EQ(rtx_ssrcs.size(), send_stream->GetConfig().rtp.rtx.ssrcs.size()); | 1310 ASSERT_EQ(rtx_ssrcs.size(), send_stream->GetConfig().rtp.rtx.ssrcs.size()); |
| 1301 for (size_t i = 0; i < rtx_ssrcs.size(); ++i) | 1311 for (size_t i = 0; i < rtx_ssrcs.size(); ++i) |
| 1302 EXPECT_EQ(rtx_ssrcs[i], send_stream->GetConfig().rtp.rtx.ssrcs[i]); | 1312 EXPECT_EQ(rtx_ssrcs[i], send_stream->GetConfig().rtp.rtx.ssrcs[i]); |
| 1303 | 1313 |
| 1304 // Receiver side. | 1314 // Receiver side. |
| 1305 FakeVideoReceiveStream* recv_stream = AddRecvStream( | 1315 FakeVideoReceiveStream* recv_stream = AddRecvStream( |
| 1306 cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); | 1316 cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); |
| 1307 EXPECT_FALSE(recv_stream->GetConfig().rtp.rtx_payload_types.empty()); | 1317 EXPECT_FALSE( |
| 1318 recv_stream->GetConfig().rtp.rtx_associated_payload_types.empty()); |
| 1308 EXPECT_EQ(recv_stream->GetConfig().decoders.size(), | 1319 EXPECT_EQ(recv_stream->GetConfig().decoders.size(), |
| 1309 recv_stream->GetConfig().rtp.rtx_payload_types.size()) | 1320 recv_stream->GetConfig().rtp.rtx_associated_payload_types.size()) |
| 1310 << "RTX should be mapped for all decoders/payload types."; | 1321 << "RTX should be mapped for all decoders/payload types."; |
| 1311 EXPECT_EQ(rtx_ssrcs[0], recv_stream->GetConfig().rtp.rtx_ssrc); | 1322 EXPECT_EQ(rtx_ssrcs[0], recv_stream->GetConfig().rtp.rtx_ssrc); |
| 1312 } | 1323 } |
| 1313 | 1324 |
| 1314 TEST_F(WebRtcVideoChannelTest, RecvStreamWithRtx) { | 1325 TEST_F(WebRtcVideoChannelTest, RecvStreamWithRtx) { |
| 1315 // Setup one channel with an associated RTX stream. | 1326 // Setup one channel with an associated RTX stream. |
| 1316 cricket::StreamParams params = | 1327 cricket::StreamParams params = |
| 1317 cricket::StreamParams::CreateLegacy(kSsrcs1[0]); | 1328 cricket::StreamParams::CreateLegacy(kSsrcs1[0]); |
| 1318 params.AddFidSsrc(kSsrcs1[0], kRtxSsrcs1[0]); | 1329 params.AddFidSsrc(kSsrcs1[0], kRtxSsrcs1[0]); |
| 1319 FakeVideoReceiveStream* recv_stream = AddRecvStream(params); | 1330 FakeVideoReceiveStream* recv_stream = AddRecvStream(params); |
| (...skipping 1815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3135 // Original payload type for RTX. | 3146 // Original payload type for RTX. |
| 3136 cricket::VideoRecvParameters parameters; | 3147 cricket::VideoRecvParameters parameters; |
| 3137 parameters.codecs.push_back(GetEngineCodec("VP8")); | 3148 parameters.codecs.push_back(GetEngineCodec("VP8")); |
| 3138 cricket::VideoCodec rtx_codec(kUnusedPayloadType1, "rtx"); | 3149 cricket::VideoCodec rtx_codec(kUnusedPayloadType1, "rtx"); |
| 3139 rtx_codec.SetParam("apt", GetEngineCodec("VP8").id); | 3150 rtx_codec.SetParam("apt", GetEngineCodec("VP8").id); |
| 3140 parameters.codecs.push_back(rtx_codec); | 3151 parameters.codecs.push_back(rtx_codec); |
| 3141 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 3152 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
| 3142 ASSERT_EQ(1U, fake_call_->GetVideoReceiveStreams().size()); | 3153 ASSERT_EQ(1U, fake_call_->GetVideoReceiveStreams().size()); |
| 3143 const webrtc::VideoReceiveStream::Config& config_before = | 3154 const webrtc::VideoReceiveStream::Config& config_before = |
| 3144 fake_call_->GetVideoReceiveStreams()[0]->GetConfig(); | 3155 fake_call_->GetVideoReceiveStreams()[0]->GetConfig(); |
| 3145 EXPECT_EQ(1U, config_before.rtp.rtx_payload_types.size()); | 3156 EXPECT_EQ(1U, config_before.rtp.rtx_associated_payload_types.size()); |
| 3146 auto it_before = | 3157 const int* payload_type_before = FindKeyByValue( |
| 3147 config_before.rtp.rtx_payload_types.find(GetEngineCodec("VP8").id); | 3158 config_before.rtp.rtx_associated_payload_types, GetEngineCodec("VP8").id); |
| 3148 ASSERT_NE(it_before, config_before.rtp.rtx_payload_types.end()); | 3159 ASSERT_NE(payload_type_before, nullptr); |
| 3149 EXPECT_EQ(kUnusedPayloadType1, it_before->second); | 3160 EXPECT_EQ(kUnusedPayloadType1, *payload_type_before); |
| 3150 EXPECT_EQ(kRtxSsrcs1[0], config_before.rtp.rtx_ssrc); | 3161 EXPECT_EQ(kRtxSsrcs1[0], config_before.rtp.rtx_ssrc); |
| 3151 | 3162 |
| 3152 // Change payload type for RTX. | 3163 // Change payload type for RTX. |
| 3153 parameters.codecs[1].id = kUnusedPayloadType2; | 3164 parameters.codecs[1].id = kUnusedPayloadType2; |
| 3154 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 3165 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
| 3155 ASSERT_EQ(1U, fake_call_->GetVideoReceiveStreams().size()); | 3166 ASSERT_EQ(1U, fake_call_->GetVideoReceiveStreams().size()); |
| 3156 const webrtc::VideoReceiveStream::Config& config_after = | 3167 const webrtc::VideoReceiveStream::Config& config_after = |
| 3157 fake_call_->GetVideoReceiveStreams()[0]->GetConfig(); | 3168 fake_call_->GetVideoReceiveStreams()[0]->GetConfig(); |
| 3158 EXPECT_EQ(1U, config_after.rtp.rtx_payload_types.size()); | 3169 EXPECT_EQ(1U, config_after.rtp.rtx_associated_payload_types.size()); |
| 3159 auto it_after = | 3170 const int* payload_type_after = FindKeyByValue( |
| 3160 config_after.rtp.rtx_payload_types.find(GetEngineCodec("VP8").id); | 3171 config_after.rtp.rtx_associated_payload_types, GetEngineCodec("VP8").id); |
| 3161 ASSERT_NE(it_after, config_after.rtp.rtx_payload_types.end()); | 3172 ASSERT_NE(payload_type_after, nullptr); |
| 3162 EXPECT_EQ(kUnusedPayloadType2, it_after->second); | 3173 EXPECT_EQ(kUnusedPayloadType2, *payload_type_after); |
| 3163 EXPECT_EQ(kRtxSsrcs1[0], config_after.rtp.rtx_ssrc); | 3174 EXPECT_EQ(kRtxSsrcs1[0], config_after.rtp.rtx_ssrc); |
| 3164 } | 3175 } |
| 3165 | 3176 |
| 3166 TEST_F(WebRtcVideoChannelTest, SetRecvCodecsDifferentPayloadType) { | 3177 TEST_F(WebRtcVideoChannelTest, SetRecvCodecsDifferentPayloadType) { |
| 3167 cricket::VideoRecvParameters parameters; | 3178 cricket::VideoRecvParameters parameters; |
| 3168 parameters.codecs.push_back(GetEngineCodec("VP8")); | 3179 parameters.codecs.push_back(GetEngineCodec("VP8")); |
| 3169 parameters.codecs[0].id = 99; | 3180 parameters.codecs[0].id = 99; |
| 3170 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 3181 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
| 3171 } | 3182 } |
| 3172 | 3183 |
| (...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3776 << "No default receive stream created."; | 3787 << "No default receive stream created."; |
| 3777 FakeVideoReceiveStream* recv_stream = fake_call_->GetVideoReceiveStreams()[0]; | 3788 FakeVideoReceiveStream* recv_stream = fake_call_->GetVideoReceiveStreams()[0]; |
| 3778 EXPECT_EQ(0u, recv_stream->GetConfig().rtp.rtx_ssrc) | 3789 EXPECT_EQ(0u, recv_stream->GetConfig().rtp.rtx_ssrc) |
| 3779 << "Default receive stream should not have configured RTX"; | 3790 << "Default receive stream should not have configured RTX"; |
| 3780 | 3791 |
| 3781 EXPECT_TRUE(channel_->AddRecvStream( | 3792 EXPECT_TRUE(channel_->AddRecvStream( |
| 3782 cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs))); | 3793 cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs))); |
| 3783 ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size()) | 3794 ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size()) |
| 3784 << "AddRecvStream should have reconfigured, not added a new receiver."; | 3795 << "AddRecvStream should have reconfigured, not added a new receiver."; |
| 3785 recv_stream = fake_call_->GetVideoReceiveStreams()[0]; | 3796 recv_stream = fake_call_->GetVideoReceiveStreams()[0]; |
| 3786 EXPECT_FALSE(recv_stream->GetConfig().rtp.rtx_payload_types.empty()); | 3797 EXPECT_FALSE( |
| 3798 recv_stream->GetConfig().rtp.rtx_associated_payload_types.empty()); |
| 3787 EXPECT_EQ(recv_stream->GetConfig().decoders.size(), | 3799 EXPECT_EQ(recv_stream->GetConfig().decoders.size(), |
| 3788 recv_stream->GetConfig().rtp.rtx_payload_types.size()) | 3800 recv_stream->GetConfig().rtp.rtx_associated_payload_types.size()) |
| 3789 << "RTX should be mapped for all decoders/payload types."; | 3801 << "RTX should be mapped for all decoders/payload types."; |
| 3790 EXPECT_EQ(rtx_ssrcs[0], recv_stream->GetConfig().rtp.rtx_ssrc); | 3802 EXPECT_EQ(rtx_ssrcs[0], recv_stream->GetConfig().rtp.rtx_ssrc); |
| 3791 } | 3803 } |
| 3792 | 3804 |
| 3793 TEST_F(WebRtcVideoChannelTest, RejectsAddingStreamsWithMissingSsrcsForRtx) { | 3805 TEST_F(WebRtcVideoChannelTest, RejectsAddingStreamsWithMissingSsrcsForRtx) { |
| 3794 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 3806 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
| 3795 | 3807 |
| 3796 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs1); | 3808 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs1); |
| 3797 const std::vector<uint32_t> rtx_ssrcs = MAKE_VECTOR(kRtxSsrcs1); | 3809 const std::vector<uint32_t> rtx_ssrcs = MAKE_VECTOR(kRtxSsrcs1); |
| 3798 | 3810 |
| (...skipping 859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4658 | 4670 |
| 4659 TEST_F(WebRtcVideoChannelSimulcastTest, | 4671 TEST_F(WebRtcVideoChannelSimulcastTest, |
| 4660 NoSimulcastScreenshareWithoutConference) { | 4672 NoSimulcastScreenshareWithoutConference) { |
| 4661 webrtc::test::ScopedFieldTrials override_field_trials_( | 4673 webrtc::test::ScopedFieldTrials override_field_trials_( |
| 4662 "WebRTC-SimulcastScreenshare/Enabled/"); | 4674 "WebRTC-SimulcastScreenshare/Enabled/"); |
| 4663 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 1, true, | 4675 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 1, true, |
| 4664 false); | 4676 false); |
| 4665 } | 4677 } |
| 4666 | 4678 |
| 4667 } // namespace cricket | 4679 } // namespace cricket |
| OLD | NEW |