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

Unified Diff: webrtc/video/end_to_end_tests.cc

Issue 2669413003: Enable send-side BWE by default for video in call tests. (Closed)
Patch Set: . Created 3 years, 10 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
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 6812467cb7062e384aae80075961261b655cdb9d..966a6d3f25b560dc933c3d8cf9f924febb497bf5 100644
--- a/webrtc/video/end_to_end_tests.cc
+++ b/webrtc/video/end_to_end_tests.cc
@@ -1308,6 +1308,7 @@ void EndToEndTest::RespectsRtcpMode(RtcpMode rtcp_mode) {
private:
Action OnSendRtp(const uint8_t* packet, size_t length) override {
+ rtc::CritScope lock(&crit_);
if (++sent_rtp_ % 3 == 0)
return DROP_PACKET;
@@ -1315,6 +1316,7 @@ void EndToEndTest::RespectsRtcpMode(RtcpMode rtcp_mode) {
}
Action OnReceiveRtcp(const uint8_t* packet, size_t length) override {
+ rtc::CritScope lock(&crit_);
++sent_rtcp_;
test::RtcpPacketParser parser;
EXPECT_TRUE(parser.Parse(packet, length));
@@ -1323,7 +1325,10 @@ void EndToEndTest::RespectsRtcpMode(RtcpMode rtcp_mode) {
switch (rtcp_mode_) {
case RtcpMode::kCompound:
- if (parser.receiver_report()->num_packets() == 0) {
+ // TODO(holmer): We shouldn't send transport feedback alone if
+ // compound RTCP is negotiated.
+ if (parser.receiver_report()->num_packets() == 0 &&
+ parser.transport_feedback()->num_packets() == 0) {
ADD_FAILURE() << "Received RTCP packet without receiver report for "
"RtcpMode::kCompound.";
observation_complete_.Set();
@@ -1362,8 +1367,11 @@ void EndToEndTest::RespectsRtcpMode(RtcpMode rtcp_mode) {
}
RtcpMode rtcp_mode_;
- int sent_rtp_;
- int sent_rtcp_;
+ rtc::CriticalSection crit_;
+ // Must be protected since RTCP can be sent by both the process thread
+ // and the pacer thread.
+ int sent_rtp_ GUARDED_BY(&crit_);
+ int sent_rtcp_ GUARDED_BY(&crit_);
} test(rtcp_mode);
RunBaseTest(&test);
@@ -1803,10 +1811,6 @@ class TransportFeedbackTester : public test::EndToEndTest {
VideoSendStream::Config* send_config,
std::vector<VideoReceiveStream::Config>* receive_configs,
VideoEncoderConfig* encoder_config) override {
- send_config->rtp.extensions.clear();
- send_config->rtp.extensions.push_back(
- RtpExtension(RtpExtension::kTransportSequenceNumberUri, kExtensionId));
- (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions;
(*receive_configs)[0].rtp.transport_cc = feedback_enabled_;
}
@@ -1934,6 +1938,17 @@ TEST_P(EndToEndTest, ReceiveStreamSendsRemb) {
public:
RembObserver() : EndToEndTest(kDefaultTimeoutMs) {}
+ void ModifyVideoConfigs(
+ VideoSendStream::Config* send_config,
+ std::vector<VideoReceiveStream::Config>* receive_configs,
+ VideoEncoderConfig* encoder_config) override {
+ send_config->rtp.extensions.clear();
+ send_config->rtp.extensions.push_back(RtpExtension(
+ RtpExtension::kAbsSendTimeUri, test::kAbsSendTimeExtensionId));
+ (*receive_configs)[0].rtp.remb = true;
+ (*receive_configs)[0].rtp.transport_cc = false;
+ }
+
Action OnReceiveRtcp(const uint8_t* packet, size_t length) override {
test::RtcpPacketParser parser;
EXPECT_TRUE(parser.Parse(packet, length));
@@ -1958,46 +1973,66 @@ TEST_P(EndToEndTest, ReceiveStreamSendsRemb) {
RunBaseTest(&test);
}
-TEST_P(EndToEndTest, VerifyBandwidthStats) {
- class RtcpObserver : public test::EndToEndTest {
- public:
- RtcpObserver()
- : EndToEndTest(kDefaultTimeoutMs),
- sender_call_(nullptr),
- receiver_call_(nullptr),
- has_seen_pacer_delay_(false) {}
+class BandwidthStatsTest : public test::EndToEndTest {
+ public:
+ explicit BandwidthStatsTest(bool send_side_bwe)
+ : EndToEndTest(test::CallTest::kDefaultTimeoutMs),
+ sender_call_(nullptr),
+ receiver_call_(nullptr),
+ has_seen_pacer_delay_(false),
+ send_side_bwe_(send_side_bwe) {}
- Action OnSendRtp(const uint8_t* packet, size_t length) override {
- Call::Stats sender_stats = sender_call_->GetStats();
- Call::Stats receiver_stats = receiver_call_->GetStats();
- if (!has_seen_pacer_delay_)
- has_seen_pacer_delay_ = sender_stats.pacer_delay_ms > 0;
- if (sender_stats.send_bandwidth_bps > 0 &&
- receiver_stats.recv_bandwidth_bps > 0 && has_seen_pacer_delay_) {
- observation_complete_.Set();
- }
- return SEND_PACKET;
+ void ModifyVideoConfigs(
+ VideoSendStream::Config* send_config,
+ std::vector<VideoReceiveStream::Config>* receive_configs,
+ VideoEncoderConfig* encoder_config) override {
+ if (!send_side_bwe_) {
+ send_config->rtp.extensions.clear();
+ send_config->rtp.extensions.push_back(RtpExtension(
+ RtpExtension::kAbsSendTimeUri, test::kAbsSendTimeExtensionId));
+ (*receive_configs)[0].rtp.remb = true;
+ (*receive_configs)[0].rtp.transport_cc = false;
}
+ }
- void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
- sender_call_ = sender_call;
- receiver_call_ = receiver_call;
+ Action OnSendRtp(const uint8_t* packet, size_t length) override {
+ Call::Stats sender_stats = sender_call_->GetStats();
+ Call::Stats receiver_stats = receiver_call_->GetStats();
+ if (!has_seen_pacer_delay_)
+ has_seen_pacer_delay_ = sender_stats.pacer_delay_ms > 0;
+ if (sender_stats.send_bandwidth_bps > 0 && has_seen_pacer_delay_) {
+ if (send_side_bwe_ || receiver_stats.recv_bandwidth_bps > 0)
+ observation_complete_.Set();
}
+ return SEND_PACKET;
+ }
- void PerformTest() override {
- EXPECT_TRUE(Wait()) << "Timed out while waiting for "
- "non-zero bandwidth stats.";
- }
+ void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
+ sender_call_ = sender_call;
+ receiver_call_ = receiver_call;
+ }
- private:
- Call* sender_call_;
- Call* receiver_call_;
- bool has_seen_pacer_delay_;
- } test;
+ void PerformTest() override {
+ EXPECT_TRUE(Wait()) << "Timed out while waiting for "
+ "non-zero bandwidth stats.";
+ }
+
+ private:
+ Call* sender_call_;
+ Call* receiver_call_;
+ bool has_seen_pacer_delay_;
+ const bool send_side_bwe_;
+};
+TEST_P(EndToEndTest, VerifySendSideBweStats) {
+ BandwidthStatsTest test(true);
RunBaseTest(&test);
}
+TEST_P(EndToEndTest, VerifyRecvSideBweStats) {
+ BandwidthStatsTest test(false);
+ RunBaseTest(&test);
+}
// Verifies that it's possible to limit the send BWE by sending a REMB.
// This is verified by allowing the send BWE to ramp-up to >1000 kbps,
@@ -2042,18 +2077,11 @@ TEST_P(EndToEndTest, RembWithSendSideBwe) {
std::vector<VideoReceiveStream::Config>* receive_configs,
VideoEncoderConfig* encoder_config) override {
ASSERT_EQ(1u, send_config->rtp.ssrcs.size());
- send_config->rtp.extensions.clear();
- send_config->rtp.extensions.push_back(
- RtpExtension(RtpExtension::kTransportSequenceNumberUri,
- test::kTransportSequenceNumberExtensionId));
sender_ssrc_ = send_config->rtp.ssrcs[0];
encoder_config->max_bitrate_bps = 2000000;
ASSERT_EQ(1u, receive_configs->size());
- (*receive_configs)[0].rtp.remb = false;
- (*receive_configs)[0].rtp.transport_cc = true;
- (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions;
RtpRtcp::Configuration config;
config.receiver_only = true;
config.clock = clock_;
@@ -2307,11 +2335,6 @@ void EndToEndTest::VerifyHistogramStats(bool use_rtx,
VideoSendStream::Config* send_config,
std::vector<VideoReceiveStream::Config>* receive_configs,
VideoEncoderConfig* encoder_config) override {
- static const int kExtensionId = 8;
- send_config->rtp.extensions.push_back(RtpExtension(
- RtpExtension::kTransportSequenceNumberUri, kExtensionId));
- (*receive_configs)[0].rtp.extensions.push_back(RtpExtension(
- RtpExtension::kTransportSequenceNumberUri, kExtensionId));
// NACK
send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
(*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
@@ -3974,16 +3997,6 @@ TEST_P(EndToEndTest, TransportSeqNumOnAudioAndVideo) {
size_t GetNumVideoStreams() const override { return 1; }
size_t GetNumAudioStreams() const override { return 1; }
- void ModifyVideoConfigs(
- VideoSendStream::Config* send_config,
- std::vector<VideoReceiveStream::Config>* receive_configs,
- VideoEncoderConfig* encoder_config) override {
- send_config->rtp.extensions.clear();
- send_config->rtp.extensions.push_back(RtpExtension(
- RtpExtension::kTransportSequenceNumberUri, kExtensionId));
- (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions;
- }
-
void ModifyAudioConfigs(
AudioSendStream::Config* send_config,
std::vector<AudioReceiveStream::Config>* receive_configs) override {

Powered by Google App Engine
This is Rietveld 408576698