diff options
Diffstat (limited to 'media/engine/webrtc_video_engine_unittest.cc')
-rw-r--r-- | media/engine/webrtc_video_engine_unittest.cc | 93 |
1 files changed, 66 insertions, 27 deletions
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc index 0f416aaeea..645413bced 100644 --- a/media/engine/webrtc_video_engine_unittest.cc +++ b/media/engine/webrtc_video_engine_unittest.cc @@ -19,7 +19,6 @@ #include <vector> #include "absl/algorithm/container.h" -#include "absl/memory/memory.h" #include "absl/strings/match.h" #include "api/rtc_event_log/rtc_event_log.h" #include "api/rtp_parameters.h" @@ -38,6 +37,7 @@ #include "api/video/video_bitrate_allocation.h" #include "api/video_codecs/h264_profile_level_id.h" #include "api/video_codecs/sdp_video_format.h" +#include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_decoder_factory.h" #include "api/video_codecs/video_decoder_factory_template.h" #include "api/video_codecs/video_decoder_factory_template_dav1d_adapter.h" @@ -99,6 +99,8 @@ using ::testing::StrNe; using ::testing::Values; using ::testing::WithArg; using ::webrtc::BitrateConstraints; +using ::webrtc::Call; +using ::webrtc::CallConfig; using ::webrtc::kDefaultScalabilityModeStr; using ::webrtc::RtpExtension; using ::webrtc::RtpPacket; @@ -109,7 +111,6 @@ using ::webrtc::Timestamp; using ::webrtc::test::RtcpPacketParser; namespace { -static const int kDefaultQpMax = 56; static const uint8_t kRedRtxPayloadType = 125; @@ -355,8 +356,8 @@ class WebRtcVideoEngineTest : public ::testing::Test { : field_trials_(field_trials), time_controller_(webrtc::Timestamp::Millis(4711)), task_queue_factory_(time_controller_.CreateTaskQueueFactory()), - call_(webrtc::Call::Create([&] { - webrtc::Call::Config call_config(&event_log_); + call_(Call::Create([&] { + CallConfig call_config(&event_log_); call_config.task_queue_factory = task_queue_factory_.get(); call_config.trials = &field_trials_; return call_config; @@ -401,7 +402,7 @@ class WebRtcVideoEngineTest : public ::testing::Test { std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_; // Used in WebRtcVideoEngineVoiceTest, but defined here so it's properly // initialized when the constructor is called. - std::unique_ptr<webrtc::Call> call_; + std::unique_ptr<Call> call_; cricket::FakeWebRtcVideoEncoderFactory* encoder_factory_; cricket::FakeWebRtcVideoDecoderFactory* decoder_factory_; std::unique_ptr<webrtc::VideoBitrateAllocatorFactory> @@ -976,6 +977,45 @@ TEST_F(WebRtcVideoEngineTest, SendsFeedbackAfterUnsignaledRtxPacket) { receive_channel->SetInterface(nullptr); } +TEST_F(WebRtcVideoEngineTest, ReceiveBufferSizeViaFieldTrial) { + webrtc::test::ScopedKeyValueConfig override_field_trials( + field_trials_, "WebRTC-ReceiveBufferSize/size_bytes:10000/"); + std::unique_ptr<VideoMediaReceiveChannelInterface> receive_channel = + engine_.CreateReceiveChannel(call_.get(), GetMediaConfig(), + VideoOptions(), webrtc::CryptoOptions()); + cricket::FakeNetworkInterface network; + receive_channel->SetInterface(&network); + EXPECT_EQ(10000, network.recvbuf_size()); + receive_channel->SetInterface(nullptr); +} + +TEST_F(WebRtcVideoEngineTest, TooLowReceiveBufferSizeViaFieldTrial) { + // 10000001 is too high, it will revert to the default + // kVideoRtpRecvBufferSize. + webrtc::test::ScopedKeyValueConfig override_field_trials( + field_trials_, "WebRTC-ReceiveBufferSize/size_bytes:10000001/"); + std::unique_ptr<VideoMediaReceiveChannelInterface> receive_channel = + engine_.CreateReceiveChannel(call_.get(), GetMediaConfig(), + VideoOptions(), webrtc::CryptoOptions()); + cricket::FakeNetworkInterface network; + receive_channel->SetInterface(&network); + EXPECT_EQ(kVideoRtpRecvBufferSize, network.recvbuf_size()); + receive_channel->SetInterface(nullptr); +} + +TEST_F(WebRtcVideoEngineTest, TooHighReceiveBufferSizeViaFieldTrial) { + // 9999 is too low, it will revert to the default kVideoRtpRecvBufferSize. + webrtc::test::ScopedKeyValueConfig override_field_trials( + field_trials_, "WebRTC-ReceiveBufferSize/size_bytes:9999/"); + std::unique_ptr<VideoMediaReceiveChannelInterface> receive_channel = + engine_.CreateReceiveChannel(call_.get(), GetMediaConfig(), + VideoOptions(), webrtc::CryptoOptions()); + cricket::FakeNetworkInterface network; + receive_channel->SetInterface(&network); + EXPECT_EQ(kVideoRtpRecvBufferSize, network.recvbuf_size()); + receive_channel->SetInterface(nullptr); +} + TEST_F(WebRtcVideoEngineTest, UpdatesUnsignaledRtxSsrcAndRecoversPayload) { // Setup a channel with VP8, RTX and transport sequence number header // extension. Receive stream is not explicitly configured. @@ -1443,11 +1483,11 @@ TEST(WebRtcVideoEngineNewVideoCodecFactoryTest, Vp8) { webrtc::GlobalSimulatedTimeController time_controller( webrtc::Timestamp::Millis(4711)); auto task_queue_factory = time_controller.CreateTaskQueueFactory(); - webrtc::Call::Config call_config(&event_log); + CallConfig call_config(&event_log); webrtc::FieldTrialBasedConfig field_trials; call_config.trials = &field_trials; call_config.task_queue_factory = task_queue_factory.get(); - const auto call = absl::WrapUnique(webrtc::Call::Create(call_config)); + const std::unique_ptr<Call> call = Call::Create(call_config); // Create send channel. const int send_ssrc = 123; @@ -1575,10 +1615,9 @@ TEST_F(WebRtcVideoEngineTest, SetVideoRtxEnabled) { class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test { protected: - webrtc::Call::Config GetCallConfig( - webrtc::RtcEventLogNull* event_log, - webrtc::TaskQueueFactory* task_queue_factory) { - webrtc::Call::Config call_config(event_log); + CallConfig GetCallConfig(webrtc::RtcEventLogNull* event_log, + webrtc::TaskQueueFactory* task_queue_factory) { + CallConfig call_config(event_log); call_config.task_queue_factory = task_queue_factory; call_config.trials = &field_trials_; return call_config; @@ -1586,8 +1625,8 @@ class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test { WebRtcVideoChannelEncodedFrameCallbackTest() : task_queue_factory_(time_controller_.CreateTaskQueueFactory()), - call_(absl::WrapUnique(webrtc::Call::Create( - GetCallConfig(&event_log_, task_queue_factory_.get())))), + call_(Call::Create( + GetCallConfig(&event_log_, task_queue_factory_.get()))), video_bitrate_allocator_factory_( webrtc::CreateBuiltinVideoBitrateAllocatorFactory()), engine_( @@ -1639,7 +1678,7 @@ class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test { webrtc::test::ScopedKeyValueConfig field_trials_; webrtc::RtcEventLogNull event_log_; std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_; - std::unique_ptr<webrtc::Call> call_; + std::unique_ptr<Call> call_; std::unique_ptr<webrtc::VideoBitrateAllocatorFactory> video_bitrate_allocator_factory_; WebRtcVideoEngine engine_; @@ -1775,10 +1814,10 @@ class WebRtcVideoChannelBaseTest : public ::testing::Test { void SetUp() override { // One testcase calls SetUp in a loop, only create call_ once. if (!call_) { - webrtc::Call::Config call_config(&event_log_); + CallConfig call_config(&event_log_); call_config.task_queue_factory = task_queue_factory_.get(); call_config.trials = &field_trials_; - call_.reset(webrtc::Call::Create(call_config)); + call_ = Call::Create(call_config); } cricket::MediaConfig media_config; @@ -1981,7 +2020,7 @@ class WebRtcVideoChannelBaseTest : public ::testing::Test { webrtc::test::ScopedKeyValueConfig field_trials_; std::unique_ptr<webrtc::test::ScopedKeyValueConfig> override_field_trials_; std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_; - std::unique_ptr<webrtc::Call> call_; + std::unique_ptr<Call> call_; std::unique_ptr<webrtc::VideoBitrateAllocatorFactory> video_bitrate_allocator_factory_; WebRtcVideoEngine engine_; @@ -2621,7 +2660,6 @@ TEST_F(WebRtcVideoChannelBaseTest, SendCodecIsMovedToFrontInRtpParameters) { parameters.codecs.push_back(GetEngineCodec("VP9")); parameters.codecs.push_back(GetEngineCodec("VP8")); EXPECT_TRUE(send_channel_->SetSenderParameters(parameters)); - send_channel_->SetVideoCodecSwitchingEnabled(true); auto send_codecs = send_channel_->GetRtpSendParameters(kSsrc).codecs; ASSERT_EQ(send_codecs.size(), 2u); @@ -4340,7 +4378,7 @@ TEST_F(WebRtcVideoChannelTest, SetDefaultSendCodecs) { absl::optional<VideoCodec> codec = send_channel_->GetSendCodec(); ASSERT_TRUE(codec); - EXPECT_TRUE(codec->Matches(engine_.send_codecs()[0], &field_trials_)); + EXPECT_TRUE(codec->Matches(engine_.send_codecs()[0])); // Using a RTX setup to verify that the default RTX payload type is good. const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs1); @@ -4828,7 +4866,7 @@ TEST_F(WebRtcVideoChannelFlexfecSendRecvTest, TEST_F(WebRtcVideoChannelTest, SetSendCodecsChangesExistingStreams) { cricket::VideoSenderParameters parameters; cricket::VideoCodec codec = cricket::CreateVideoCodec(100, "VP8"); - codec.SetParam(kCodecParamMaxQuantization, kDefaultQpMax); + codec.SetParam(kCodecParamMaxQuantization, kDefaultVideoMaxQpVpx); parameters.codecs.push_back(codec); ASSERT_TRUE(send_channel_->SetSenderParameters(parameters)); @@ -4840,14 +4878,14 @@ TEST_F(WebRtcVideoChannelTest, SetSendCodecsChangesExistingStreams) { send_channel_->SetVideoSend(last_ssrc_, nullptr, &frame_forwarder)); std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); - EXPECT_EQ(kDefaultQpMax, streams[0].max_qp); + EXPECT_EQ(kDefaultVideoMaxQpVpx, streams[0].max_qp); parameters.codecs.clear(); - codec.SetParam(kCodecParamMaxQuantization, kDefaultQpMax + 1); + codec.SetParam(kCodecParamMaxQuantization, kDefaultVideoMaxQpVpx + 1); parameters.codecs.push_back(codec); ASSERT_TRUE(send_channel_->SetSenderParameters(parameters)); streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); - EXPECT_EQ(kDefaultQpMax + 1, streams[0].max_qp); + EXPECT_EQ(kDefaultVideoMaxQpVpx + 1, streams[0].max_qp); EXPECT_TRUE(send_channel_->SetVideoSend(last_ssrc_, nullptr, nullptr)); } @@ -6777,7 +6815,7 @@ TEST_F(WebRtcVideoChannelTest, GetStatsTranslatesReceivePacketStatsCorrectly) { TEST_F(WebRtcVideoChannelTest, TranslatesCallStatsCorrectly) { AddSendStream(); AddSendStream(); - webrtc::Call::Stats stats; + Call::Stats stats; stats.rtt_ms = 123; fake_call_->SetStats(stats); @@ -9734,8 +9772,9 @@ class WebRtcVideoChannelSimulcastTest : public ::testing::Test { if (num_configured_streams > 1 || conference_mode) { expected_streams = GetSimulcastConfig( /*min_layers=*/1, num_configured_streams, capture_width, - capture_height, webrtc::kDefaultBitratePriority, kDefaultQpMax, - screenshare && conference_mode, true, field_trials_); + capture_height, webrtc::kDefaultBitratePriority, + kDefaultVideoMaxQpVpx, screenshare && conference_mode, true, + field_trials_); if (screenshare && conference_mode) { for (const webrtc::VideoStream& stream : expected_streams) { // Never scale screen content. @@ -9751,7 +9790,7 @@ class WebRtcVideoChannelSimulcastTest : public ::testing::Test { stream.min_bitrate_bps = webrtc::kDefaultMinVideoBitrateBps; stream.target_bitrate_bps = stream.max_bitrate_bps = GetMaxDefaultBitrateBps(capture_width, capture_height); - stream.max_qp = kDefaultQpMax; + stream.max_qp = kDefaultVideoMaxQpVpx; expected_streams.push_back(stream); } |