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

Unified Diff: webrtc/video/end_to_end_tests.cc

Issue 2383493005: Revert of Let ViEEncoder handle resolution changes. (Closed)
Patch Set: Created 4 years, 3 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 | « webrtc/test/frame_generator_capturer.cc ('k') | webrtc/video/video_quality_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/end_to_end_tests.cc
diff --git a/webrtc/video/end_to_end_tests.cc b/webrtc/video/end_to_end_tests.cc
index 67cc69f40b692e712716b975662788cd972e7843..21707ec66e9802a792ece8d37cd4d26fc882f486 100644
--- a/webrtc/video/end_to_end_tests.cc
+++ b/webrtc/video/end_to_end_tests.cc
@@ -259,8 +259,9 @@
Start();
std::unique_ptr<test::FrameGenerator> frame_generator(
- test::FrameGenerator::CreateChromaGenerator(kDefaultWidth,
- kDefaultHeight));
+ test::FrameGenerator::CreateChromaGenerator(
+ video_encoder_config_.streams[0].width,
+ video_encoder_config_.streams[0].height));
test::FrameForwarder frame_forwarder;
video_send_stream_->SetSource(&frame_forwarder);
frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame());
@@ -304,6 +305,9 @@
send_config->encoder_settings.encoder = encoder_.get();
send_config->encoder_settings.payload_name = payload_name_;
send_config->encoder_settings.payload_type = 126;
+ encoder_config->streams[0].min_bitrate_bps = 50000;
+ encoder_config->streams[0].target_bitrate_bps =
+ encoder_config->streams[0].max_bitrate_bps = 2000000;
(*receive_configs)[0].renderer = this;
(*receive_configs)[0].decoders.resize(1);
@@ -789,6 +793,9 @@
send_config->encoder_settings.encoder = encoder_.get();
send_config->encoder_settings.payload_name = "VP8";
send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType;
+ encoder_config->streams[0].min_bitrate_bps = 50000;
+ encoder_config->streams[0].max_bitrate_bps =
+ encoder_config->streams[0].target_bitrate_bps = 2000000;
(*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
(*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType;
@@ -1114,8 +1121,7 @@
CreateMatchingReceiveConfigs(&receive_transport);
CreateVideoStreams();
- CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
- kDefaultHeight);
+ CreateFrameGeneratorCapturer();
Start();
receiver_call_->DestroyVideoReceiveStream(video_receive_streams_[0]);
@@ -1272,8 +1278,13 @@
send_config.encoder_settings.payload_name = "VP8";
send_config.encoder_settings.payload_type = 124;
VideoEncoderConfig encoder_config;
- test::FillEncoderConfiguration(1, &encoder_config);
- encoder_config.max_bitrate_bps = 100000;
+ encoder_config.streams = test::CreateVideoStreams(1);
+ VideoStream* stream = &encoder_config.streams[0];
+ stream->width = width;
+ stream->height = height;
+ stream->max_framerate = 5;
+ stream->min_bitrate_bps = stream->target_bitrate_bps =
+ stream->max_bitrate_bps = 100000;
UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]);
@@ -1551,9 +1562,11 @@
// Force some padding to be sent.
const int kPaddingBitrateBps = 50000;
- encoder_config->max_bitrate_bps = 1000000;
+ int total_target_bitrate = 0;
+ for (const VideoStream& stream : encoder_config->streams)
+ total_target_bitrate += stream.target_bitrate_bps;
encoder_config->min_transmit_bitrate_bps =
- encoder_config->max_bitrate_bps + kPaddingBitrateBps;
+ total_target_bitrate + kPaddingBitrateBps;
// Configure RTX for redundant payload padding.
send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
@@ -1753,8 +1766,9 @@
Start();
std::unique_ptr<test::FrameGenerator> frame_generator(
- test::FrameGenerator::CreateChromaGenerator(kDefaultWidth,
- kDefaultHeight));
+ test::FrameGenerator::CreateChromaGenerator(
+ video_encoder_config_.streams[0].width,
+ video_encoder_config_.streams[0].height));
test::FrameForwarder forwarder;
video_send_stream_->SetSource(&forwarder);
forwarder.IncomingCapturedFrame(*frame_generator->NextFrame());
@@ -1905,7 +1919,8 @@
test::kTransportSequenceNumberExtensionId));
sender_ssrc_ = send_config->rtp.ssrcs[0];
- encoder_config->max_bitrate_bps = 2000000;
+ encoder_config->streams[0].max_bitrate_bps =
+ encoder_config->streams[0].target_bitrate_bps = 2000000;
ASSERT_EQ(1u, receive_configs->size());
(*receive_configs)[0].rtp.remb = false;
@@ -2246,18 +2261,24 @@
EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedWidthInPixels"));
EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedHeightInPixels"));
- EXPECT_EQ(1, metrics::NumEvents(video_prefix + "InputWidthInPixels",
- kDefaultWidth));
- EXPECT_EQ(1, metrics::NumEvents(video_prefix + "InputHeightInPixels",
- kDefaultHeight));
- EXPECT_EQ(
- 1, metrics::NumEvents(video_prefix + "SentWidthInPixels", kDefaultWidth));
- EXPECT_EQ(1, metrics::NumEvents(video_prefix + "SentHeightInPixels",
- kDefaultHeight));
- EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.ReceivedWidthInPixels",
- kDefaultWidth));
- EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.ReceivedHeightInPixels",
- kDefaultHeight));
+ EXPECT_EQ(1, metrics::NumEvents(
+ video_prefix + "InputWidthInPixels",
+ static_cast<int>(video_encoder_config_.streams[0].width)));
+ EXPECT_EQ(1, metrics::NumEvents(
+ video_prefix + "InputHeightInPixels",
+ static_cast<int>(video_encoder_config_.streams[0].height)));
+ EXPECT_EQ(1, metrics::NumEvents(
+ video_prefix + "SentWidthInPixels",
+ static_cast<int>(video_encoder_config_.streams[0].width)));
+ EXPECT_EQ(1, metrics::NumEvents(
+ video_prefix + "SentHeightInPixels",
+ static_cast<int>(video_encoder_config_.streams[0].height)));
+ EXPECT_EQ(1, metrics::NumEvents(
+ "WebRTC.Video.ReceivedWidthInPixels",
+ static_cast<int>(video_encoder_config_.streams[0].width)));
+ EXPECT_EQ(1, metrics::NumEvents(
+ "WebRTC.Video.ReceivedHeightInPixels",
+ static_cast<int>(video_encoder_config_.streams[0].height)));
EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputFramesPerSecond"));
EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentFramesPerSecond"));
@@ -2463,41 +2484,22 @@
size_t GetNumVideoStreams() const override { return num_ssrcs_; }
- // This test use other VideoStream settings than the the default settings
- // implemented in DefaultVideoStreamFactory. Therefore this test implement
- // its own VideoEncoderConfig::VideoStreamFactoryInterface which is created
- // in ModifyVideoConfigs.
- class VideoStreamFactory
- : public VideoEncoderConfig::VideoStreamFactoryInterface {
- public:
- VideoStreamFactory() {}
-
- private:
- std::vector<VideoStream> CreateEncoderStreams(
- int width,
- int height,
- const VideoEncoderConfig& encoder_config) override {
- std::vector<VideoStream> streams =
- test::CreateVideoStreams(width, height, encoder_config);
- // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
- for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
- streams[i].min_bitrate_bps = 10000;
- streams[i].target_bitrate_bps = 15000;
- streams[i].max_bitrate_bps = 20000;
- }
- return streams;
- }
- };
-
void ModifyVideoConfigs(
VideoSendStream::Config* send_config,
std::vector<VideoReceiveStream::Config>* receive_configs,
VideoEncoderConfig* encoder_config) override {
- encoder_config->video_stream_factory =
- new rtc::RefCountedObject<VideoStreamFactory>();
+ if (num_ssrcs_ > 1) {
+ // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
+ for (size_t i = 0; i < encoder_config->streams.size(); ++i) {
+ encoder_config->streams[i].min_bitrate_bps = 10000;
+ encoder_config->streams[i].target_bitrate_bps = 15000;
+ encoder_config->streams[i].max_bitrate_bps = 20000;
+ }
+ }
+
video_encoder_config_all_streams_ = encoder_config->Copy();
if (send_single_ssrc_first_)
- encoder_config->number_of_streams = 1;
+ encoder_config->streams.resize(1);
}
void OnVideoStreamsCreated(
@@ -2557,7 +2559,7 @@
std::vector<VideoReceiveStream::Config>* receive_configs,
VideoEncoderConfig* encoder_config) override {
send_config->encoder_settings.encoder = this;
- RTC_DCHECK_EQ(1u, encoder_config->number_of_streams);
+ RTC_DCHECK_EQ(1u, encoder_config->streams.size());
}
int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override {
@@ -2829,38 +2831,16 @@
return config;
}
- // This test use other VideoStream settings than the the default settings
- // implemented in DefaultVideoStreamFactory. Therefore this test implement
- // its own VideoEncoderConfig::VideoStreamFactoryInterface which is created
- // in ModifyVideoConfigs.
- class VideoStreamFactory
- : public VideoEncoderConfig::VideoStreamFactoryInterface {
- public:
- VideoStreamFactory() {}
-
- private:
- std::vector<VideoStream> CreateEncoderStreams(
- int width,
- int height,
- const VideoEncoderConfig& encoder_config) override {
- std::vector<VideoStream> streams =
- test::CreateVideoStreams(width, height, encoder_config);
- // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
- for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
- streams[i].min_bitrate_bps = 10000;
- streams[i].target_bitrate_bps = 15000;
- streams[i].max_bitrate_bps = 20000;
- }
- return streams;
- }
- };
-
void ModifyVideoConfigs(
VideoSendStream::Config* send_config,
std::vector<VideoReceiveStream::Config>* receive_configs,
VideoEncoderConfig* encoder_config) override {
- encoder_config->video_stream_factory =
- new rtc::RefCountedObject<VideoStreamFactory>();
+ // Set low rates to avoid waiting for rampup.
+ for (size_t i = 0; i < encoder_config->streams.size(); ++i) {
+ encoder_config->streams[i].min_bitrate_bps = 10000;
+ encoder_config->streams[i].target_bitrate_bps = 15000;
+ encoder_config->streams[i].max_bitrate_bps = 20000;
+ }
send_config->pre_encode_callback = this; // Used to inject delay.
expected_cname_ = send_config->rtp.c_name = "SomeCName";
@@ -3053,39 +3033,17 @@
size_t GetNumVideoStreams() const override { return kNumSsrcs; }
- // This test use other VideoStream settings than the the default settings
- // implemented in DefaultVideoStreamFactory. Therefore this test implement
- // its own VideoEncoderConfig::VideoStreamFactoryInterface which is created
- // in ModifyVideoConfigs.
- class VideoStreamFactory
- : public VideoEncoderConfig::VideoStreamFactoryInterface {
- public:
- VideoStreamFactory() {}
-
- private:
- std::vector<VideoStream> CreateEncoderStreams(
- int width,
- int height,
- const VideoEncoderConfig& encoder_config) override {
- std::vector<VideoStream> streams =
- test::CreateVideoStreams(width, height, encoder_config);
- // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
- for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
- streams[i].min_bitrate_bps = 10000;
- streams[i].target_bitrate_bps = 15000;
- streams[i].max_bitrate_bps = 20000;
- }
- return streams;
- }
- };
-
void ModifyVideoConfigs(
VideoSendStream::Config* send_config,
std::vector<VideoReceiveStream::Config>* receive_configs,
VideoEncoderConfig* encoder_config) override {
// Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
- encoder_config->video_stream_factory =
- new rtc::RefCountedObject<VideoStreamFactory>();
+ for (size_t i = 0; i < encoder_config->streams.size(); ++i) {
+ encoder_config->streams[i].min_bitrate_bps = 10000;
+ encoder_config->streams[i].target_bitrate_bps = 15000;
+ encoder_config->streams[i].max_bitrate_bps = 20000;
+ }
+
send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
for (size_t i = 0; i < kNumSsrcs; ++i)
@@ -3112,43 +3070,6 @@
void EndToEndTest::TestRtpStatePreservation(bool use_rtx,
bool provoke_rtcpsr_before_rtp) {
- // This test use other VideoStream settings than the the default settings
- // implemented in DefaultVideoStreamFactory. Therefore this test implement
- // its own VideoEncoderConfig::VideoStreamFactoryInterface which is created
- // in ModifyVideoConfigs.
- class VideoStreamFactory
- : public VideoEncoderConfig::VideoStreamFactoryInterface {
- public:
- VideoStreamFactory() {}
-
- private:
- std::vector<VideoStream> CreateEncoderStreams(
- int width,
- int height,
- const VideoEncoderConfig& encoder_config) override {
- std::vector<VideoStream> streams =
- test::CreateVideoStreams(width, height, encoder_config);
-
- if (encoder_config.number_of_streams > 1) {
- // Lower bitrates so that all streams send initially.
- RTC_DCHECK_EQ(3u, encoder_config.number_of_streams);
- for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
- streams[i].min_bitrate_bps = 10000;
- streams[i].target_bitrate_bps = 15000;
- streams[i].max_bitrate_bps = 20000;
- }
- } else {
- // Use the same total bitrates when sending a single stream to avoid
- // lowering
- // the bitrate estimate and requiring a subsequent rampup.
- streams[0].min_bitrate_bps = 3 * 10000;
- streams[0].target_bitrate_bps = 3 * 15000;
- streams[0].max_bitrate_bps = 3 * 20000;
- }
- return streams;
- }
- };
-
class RtpSequenceObserver : public test::RtpRtcpObserver {
public:
explicit RtpSequenceObserver(bool use_rtx)
@@ -3284,17 +3205,30 @@
video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType;
}
- video_encoder_config_.video_stream_factory =
- new rtc::RefCountedObject<VideoStreamFactory>();
+ // Lower bitrates so that all streams send initially.
+ for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) {
+ video_encoder_config_.streams[i].min_bitrate_bps = 10000;
+ video_encoder_config_.streams[i].target_bitrate_bps = 15000;
+ video_encoder_config_.streams[i].max_bitrate_bps = 20000;
+ }
+
// Use the same total bitrates when sending a single stream to avoid lowering
// the bitrate estimate and requiring a subsequent rampup.
VideoEncoderConfig one_stream = video_encoder_config_.Copy();
- // one_stream.streams.resize(1);
- one_stream.number_of_streams = 1;
+ one_stream.streams.resize(1);
+ for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) {
+ one_stream.streams.front().min_bitrate_bps +=
+ video_encoder_config_.streams[i].min_bitrate_bps;
+ one_stream.streams.front().target_bitrate_bps +=
+ video_encoder_config_.streams[i].target_bitrate_bps;
+ one_stream.streams.front().max_bitrate_bps +=
+ video_encoder_config_.streams[i].max_bitrate_bps;
+ }
+
CreateMatchingReceiveConfigs(&receive_transport);
CreateVideoStreams();
- CreateFrameGeneratorCapturer(30, 1280, 720);
+ CreateFrameGeneratorCapturer();
Start();
EXPECT_TRUE(observer.Wait())
@@ -3319,7 +3253,7 @@
static_cast<webrtc::test::DirectTransport&>(receive_transport)
.SendRtcp(packet.data(), packet.size());
}
- CreateFrameGeneratorCapturer(30, 1280, 720);
+ CreateFrameGeneratorCapturer();
frame_generator_capturer_->Start();
observer.ResetExpectedSsrcs(1);
@@ -3574,8 +3508,7 @@
CreateMatchingReceiveConfigs(&receiver_transport);
CreateVideoStreams();
- CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
- kDefaultHeight);
+ CreateFrameGeneratorCapturer();
Start();
int64_t start_time_ms = clock_->TimeInMilliseconds();
@@ -3608,8 +3541,7 @@
CreateSendConfig(1, 0, transport);
video_send_config_.encoder_settings.encoder = encoder;
CreateVideoStreams();
- CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
- kDefaultHeight);
+ CreateFrameGeneratorCapturer();
Start();
SleepMs(kSilenceTimeoutMs);
@@ -3630,8 +3562,7 @@
CreateSendConfig(1, 0, &sender_transport);
CreateMatchingReceiveConfigs(transport);
CreateVideoStreams();
- CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
- kDefaultHeight);
+ CreateFrameGeneratorCapturer();
Start();
SleepMs(kSilenceTimeoutMs);
« no previous file with comments | « webrtc/test/frame_generator_capturer.cc ('k') | webrtc/video/video_quality_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698