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 |