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

Side by Side 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 #include <algorithm> 10 #include <algorithm>
(...skipping 1290 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 class RtcpModeObserver : public test::EndToEndTest { 1301 class RtcpModeObserver : public test::EndToEndTest {
1302 public: 1302 public:
1303 explicit RtcpModeObserver(RtcpMode rtcp_mode) 1303 explicit RtcpModeObserver(RtcpMode rtcp_mode)
1304 : EndToEndTest(kDefaultTimeoutMs), 1304 : EndToEndTest(kDefaultTimeoutMs),
1305 rtcp_mode_(rtcp_mode), 1305 rtcp_mode_(rtcp_mode),
1306 sent_rtp_(0), 1306 sent_rtp_(0),
1307 sent_rtcp_(0) {} 1307 sent_rtcp_(0) {}
1308 1308
1309 private: 1309 private:
1310 Action OnSendRtp(const uint8_t* packet, size_t length) override { 1310 Action OnSendRtp(const uint8_t* packet, size_t length) override {
1311 rtc::CritScope lock(&crit_);
1311 if (++sent_rtp_ % 3 == 0) 1312 if (++sent_rtp_ % 3 == 0)
1312 return DROP_PACKET; 1313 return DROP_PACKET;
1313 1314
1314 return SEND_PACKET; 1315 return SEND_PACKET;
1315 } 1316 }
1316 1317
1317 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override { 1318 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override {
1319 rtc::CritScope lock(&crit_);
1318 ++sent_rtcp_; 1320 ++sent_rtcp_;
1319 test::RtcpPacketParser parser; 1321 test::RtcpPacketParser parser;
1320 EXPECT_TRUE(parser.Parse(packet, length)); 1322 EXPECT_TRUE(parser.Parse(packet, length));
1321 1323
1322 EXPECT_EQ(0, parser.sender_report()->num_packets()); 1324 EXPECT_EQ(0, parser.sender_report()->num_packets());
1323 1325
1324 switch (rtcp_mode_) { 1326 switch (rtcp_mode_) {
1325 case RtcpMode::kCompound: 1327 case RtcpMode::kCompound:
1326 if (parser.receiver_report()->num_packets() == 0) { 1328 // TODO(holmer): We shouldn't send transport feedback alone if
1329 // compound RTCP is negotiated.
1330 if (parser.receiver_report()->num_packets() == 0 &&
1331 parser.transport_feedback()->num_packets() == 0) {
1327 ADD_FAILURE() << "Received RTCP packet without receiver report for " 1332 ADD_FAILURE() << "Received RTCP packet without receiver report for "
1328 "RtcpMode::kCompound."; 1333 "RtcpMode::kCompound.";
1329 observation_complete_.Set(); 1334 observation_complete_.Set();
1330 } 1335 }
1331 1336
1332 if (sent_rtcp_ >= kNumCompoundRtcpPacketsToObserve) 1337 if (sent_rtcp_ >= kNumCompoundRtcpPacketsToObserve)
1333 observation_complete_.Set(); 1338 observation_complete_.Set();
1334 1339
1335 break; 1340 break;
1336 case RtcpMode::kReducedSize: 1341 case RtcpMode::kReducedSize:
(...skipping 18 matching lines...) Expand all
1355 } 1360 }
1356 1361
1357 void PerformTest() override { 1362 void PerformTest() override {
1358 EXPECT_TRUE(Wait()) 1363 EXPECT_TRUE(Wait())
1359 << (rtcp_mode_ == RtcpMode::kCompound 1364 << (rtcp_mode_ == RtcpMode::kCompound
1360 ? "Timed out before observing enough compound packets." 1365 ? "Timed out before observing enough compound packets."
1361 : "Timed out before receiving a non-compound RTCP packet."); 1366 : "Timed out before receiving a non-compound RTCP packet.");
1362 } 1367 }
1363 1368
1364 RtcpMode rtcp_mode_; 1369 RtcpMode rtcp_mode_;
1365 int sent_rtp_; 1370 rtc::CriticalSection crit_;
1366 int sent_rtcp_; 1371 // Must be protected since RTCP can be sent by both the process thread
1372 // and the pacer thread.
1373 int sent_rtp_ GUARDED_BY(&crit_);
1374 int sent_rtcp_ GUARDED_BY(&crit_);
1367 } test(rtcp_mode); 1375 } test(rtcp_mode);
1368 1376
1369 RunBaseTest(&test); 1377 RunBaseTest(&test);
1370 } 1378 }
1371 1379
1372 TEST_P(EndToEndTest, UsesRtcpCompoundMode) { 1380 TEST_P(EndToEndTest, UsesRtcpCompoundMode) {
1373 RespectsRtcpMode(RtcpMode::kCompound); 1381 RespectsRtcpMode(RtcpMode::kCompound);
1374 } 1382 }
1375 1383
1376 TEST_P(EndToEndTest, UsesRtcpReducedSizeMode) { 1384 TEST_P(EndToEndTest, UsesRtcpReducedSizeMode) {
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
1796 receiver_call_ = receiver_call; 1804 receiver_call_ = receiver_call;
1797 } 1805 }
1798 1806
1799 size_t GetNumVideoStreams() const override { return num_video_streams_; } 1807 size_t GetNumVideoStreams() const override { return num_video_streams_; }
1800 size_t GetNumAudioStreams() const override { return num_audio_streams_; } 1808 size_t GetNumAudioStreams() const override { return num_audio_streams_; }
1801 1809
1802 void ModifyVideoConfigs( 1810 void ModifyVideoConfigs(
1803 VideoSendStream::Config* send_config, 1811 VideoSendStream::Config* send_config,
1804 std::vector<VideoReceiveStream::Config>* receive_configs, 1812 std::vector<VideoReceiveStream::Config>* receive_configs,
1805 VideoEncoderConfig* encoder_config) override { 1813 VideoEncoderConfig* encoder_config) override {
1806 send_config->rtp.extensions.clear();
1807 send_config->rtp.extensions.push_back(
1808 RtpExtension(RtpExtension::kTransportSequenceNumberUri, kExtensionId));
1809 (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions;
1810 (*receive_configs)[0].rtp.transport_cc = feedback_enabled_; 1814 (*receive_configs)[0].rtp.transport_cc = feedback_enabled_;
1811 } 1815 }
1812 1816
1813 void ModifyAudioConfigs( 1817 void ModifyAudioConfigs(
1814 AudioSendStream::Config* send_config, 1818 AudioSendStream::Config* send_config,
1815 std::vector<AudioReceiveStream::Config>* receive_configs) override { 1819 std::vector<AudioReceiveStream::Config>* receive_configs) override {
1816 send_config->rtp.extensions.clear(); 1820 send_config->rtp.extensions.clear();
1817 send_config->rtp.extensions.push_back( 1821 send_config->rtp.extensions.push_back(
1818 RtpExtension(RtpExtension::kTransportSequenceNumberUri, kExtensionId)); 1822 RtpExtension(RtpExtension::kTransportSequenceNumberUri, kExtensionId));
1819 (*receive_configs)[0].rtp.extensions.clear(); 1823 (*receive_configs)[0].rtp.extensions.clear();
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1927 receiver_transport.StopSending(); 1931 receiver_transport.StopSending();
1928 1932
1929 DestroyStreams(); 1933 DestroyStreams();
1930 } 1934 }
1931 1935
1932 TEST_P(EndToEndTest, ReceiveStreamSendsRemb) { 1936 TEST_P(EndToEndTest, ReceiveStreamSendsRemb) {
1933 class RembObserver : public test::EndToEndTest { 1937 class RembObserver : public test::EndToEndTest {
1934 public: 1938 public:
1935 RembObserver() : EndToEndTest(kDefaultTimeoutMs) {} 1939 RembObserver() : EndToEndTest(kDefaultTimeoutMs) {}
1936 1940
1941 void ModifyVideoConfigs(
1942 VideoSendStream::Config* send_config,
1943 std::vector<VideoReceiveStream::Config>* receive_configs,
1944 VideoEncoderConfig* encoder_config) override {
1945 send_config->rtp.extensions.clear();
1946 send_config->rtp.extensions.push_back(RtpExtension(
1947 RtpExtension::kAbsSendTimeUri, test::kAbsSendTimeExtensionId));
1948 (*receive_configs)[0].rtp.remb = true;
1949 (*receive_configs)[0].rtp.transport_cc = false;
1950 }
1951
1937 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override { 1952 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override {
1938 test::RtcpPacketParser parser; 1953 test::RtcpPacketParser parser;
1939 EXPECT_TRUE(parser.Parse(packet, length)); 1954 EXPECT_TRUE(parser.Parse(packet, length));
1940 1955
1941 if (parser.remb()->num_packets() > 0) { 1956 if (parser.remb()->num_packets() > 0) {
1942 EXPECT_EQ(kReceiverLocalVideoSsrc, parser.remb()->sender_ssrc()); 1957 EXPECT_EQ(kReceiverLocalVideoSsrc, parser.remb()->sender_ssrc());
1943 EXPECT_LT(0U, parser.remb()->bitrate_bps()); 1958 EXPECT_LT(0U, parser.remb()->bitrate_bps());
1944 EXPECT_EQ(1U, parser.remb()->ssrcs().size()); 1959 EXPECT_EQ(1U, parser.remb()->ssrcs().size());
1945 EXPECT_EQ(kVideoSendSsrcs[0], parser.remb()->ssrcs()[0]); 1960 EXPECT_EQ(kVideoSendSsrcs[0], parser.remb()->ssrcs()[0]);
1946 observation_complete_.Set(); 1961 observation_complete_.Set();
1947 } 1962 }
1948 1963
1949 return SEND_PACKET; 1964 return SEND_PACKET;
1950 } 1965 }
1951 void PerformTest() override { 1966 void PerformTest() override {
1952 EXPECT_TRUE(Wait()) << "Timed out while waiting for a " 1967 EXPECT_TRUE(Wait()) << "Timed out while waiting for a "
1953 "receiver RTCP REMB packet to be " 1968 "receiver RTCP REMB packet to be "
1954 "sent."; 1969 "sent.";
1955 } 1970 }
1956 } test; 1971 } test;
1957 1972
1958 RunBaseTest(&test); 1973 RunBaseTest(&test);
1959 } 1974 }
1960 1975
1961 TEST_P(EndToEndTest, VerifyBandwidthStats) { 1976 class BandwidthStatsTest : public test::EndToEndTest {
1962 class RtcpObserver : public test::EndToEndTest { 1977 public:
1963 public: 1978 explicit BandwidthStatsTest(bool send_side_bwe)
1964 RtcpObserver() 1979 : EndToEndTest(test::CallTest::kDefaultTimeoutMs),
1965 : EndToEndTest(kDefaultTimeoutMs), 1980 sender_call_(nullptr),
1966 sender_call_(nullptr), 1981 receiver_call_(nullptr),
1967 receiver_call_(nullptr), 1982 has_seen_pacer_delay_(false),
1968 has_seen_pacer_delay_(false) {} 1983 send_side_bwe_(send_side_bwe) {}
1969 1984
1970 Action OnSendRtp(const uint8_t* packet, size_t length) override { 1985 void ModifyVideoConfigs(
1971 Call::Stats sender_stats = sender_call_->GetStats(); 1986 VideoSendStream::Config* send_config,
1972 Call::Stats receiver_stats = receiver_call_->GetStats(); 1987 std::vector<VideoReceiveStream::Config>* receive_configs,
1973 if (!has_seen_pacer_delay_) 1988 VideoEncoderConfig* encoder_config) override {
1974 has_seen_pacer_delay_ = sender_stats.pacer_delay_ms > 0; 1989 if (!send_side_bwe_) {
1975 if (sender_stats.send_bandwidth_bps > 0 && 1990 send_config->rtp.extensions.clear();
1976 receiver_stats.recv_bandwidth_bps > 0 && has_seen_pacer_delay_) { 1991 send_config->rtp.extensions.push_back(RtpExtension(
1992 RtpExtension::kAbsSendTimeUri, test::kAbsSendTimeExtensionId));
1993 (*receive_configs)[0].rtp.remb = true;
1994 (*receive_configs)[0].rtp.transport_cc = false;
1995 }
1996 }
1997
1998 Action OnSendRtp(const uint8_t* packet, size_t length) override {
1999 Call::Stats sender_stats = sender_call_->GetStats();
2000 Call::Stats receiver_stats = receiver_call_->GetStats();
2001 if (!has_seen_pacer_delay_)
2002 has_seen_pacer_delay_ = sender_stats.pacer_delay_ms > 0;
2003 if (sender_stats.send_bandwidth_bps > 0 && has_seen_pacer_delay_) {
2004 if (send_side_bwe_ || receiver_stats.recv_bandwidth_bps > 0)
1977 observation_complete_.Set(); 2005 observation_complete_.Set();
1978 }
1979 return SEND_PACKET;
1980 } 2006 }
2007 return SEND_PACKET;
2008 }
1981 2009
1982 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { 2010 void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
1983 sender_call_ = sender_call; 2011 sender_call_ = sender_call;
1984 receiver_call_ = receiver_call; 2012 receiver_call_ = receiver_call;
1985 } 2013 }
1986 2014
1987 void PerformTest() override { 2015 void PerformTest() override {
1988 EXPECT_TRUE(Wait()) << "Timed out while waiting for " 2016 EXPECT_TRUE(Wait()) << "Timed out while waiting for "
1989 "non-zero bandwidth stats."; 2017 "non-zero bandwidth stats.";
1990 } 2018 }
1991 2019
1992 private: 2020 private:
1993 Call* sender_call_; 2021 Call* sender_call_;
1994 Call* receiver_call_; 2022 Call* receiver_call_;
1995 bool has_seen_pacer_delay_; 2023 bool has_seen_pacer_delay_;
1996 } test; 2024 const bool send_side_bwe_;
2025 };
1997 2026
2027 TEST_P(EndToEndTest, VerifySendSideBweStats) {
2028 BandwidthStatsTest test(true);
1998 RunBaseTest(&test); 2029 RunBaseTest(&test);
1999 } 2030 }
2000 2031
2032 TEST_P(EndToEndTest, VerifyRecvSideBweStats) {
2033 BandwidthStatsTest test(false);
2034 RunBaseTest(&test);
2035 }
2001 2036
2002 // Verifies that it's possible to limit the send BWE by sending a REMB. 2037 // Verifies that it's possible to limit the send BWE by sending a REMB.
2003 // This is verified by allowing the send BWE to ramp-up to >1000 kbps, 2038 // This is verified by allowing the send BWE to ramp-up to >1000 kbps,
2004 // then have the test generate a REMB of 500 kbps and verify that the send BWE 2039 // then have the test generate a REMB of 500 kbps and verify that the send BWE
2005 // is reduced to exactly 500 kbps. Then a REMB of 1000 kbps is generated and the 2040 // is reduced to exactly 500 kbps. Then a REMB of 1000 kbps is generated and the
2006 // test verifies that the send BWE ramps back up to exactly 1000 kbps. 2041 // test verifies that the send BWE ramps back up to exactly 1000 kbps.
2007 TEST_P(EndToEndTest, RembWithSendSideBwe) { 2042 TEST_P(EndToEndTest, RembWithSendSideBwe) {
2008 class BweObserver : public test::EndToEndTest { 2043 class BweObserver : public test::EndToEndTest {
2009 public: 2044 public:
2010 BweObserver() 2045 BweObserver()
(...skipping 24 matching lines...) Expand all
2035 // Set a high start bitrate to reduce the test completion time. 2070 // Set a high start bitrate to reduce the test completion time.
2036 config.bitrate_config.start_bitrate_bps = remb_bitrate_bps_; 2071 config.bitrate_config.start_bitrate_bps = remb_bitrate_bps_;
2037 return config; 2072 return config;
2038 } 2073 }
2039 2074
2040 void ModifyVideoConfigs( 2075 void ModifyVideoConfigs(
2041 VideoSendStream::Config* send_config, 2076 VideoSendStream::Config* send_config,
2042 std::vector<VideoReceiveStream::Config>* receive_configs, 2077 std::vector<VideoReceiveStream::Config>* receive_configs,
2043 VideoEncoderConfig* encoder_config) override { 2078 VideoEncoderConfig* encoder_config) override {
2044 ASSERT_EQ(1u, send_config->rtp.ssrcs.size()); 2079 ASSERT_EQ(1u, send_config->rtp.ssrcs.size());
2045 send_config->rtp.extensions.clear();
2046 send_config->rtp.extensions.push_back(
2047 RtpExtension(RtpExtension::kTransportSequenceNumberUri,
2048 test::kTransportSequenceNumberExtensionId));
2049 sender_ssrc_ = send_config->rtp.ssrcs[0]; 2080 sender_ssrc_ = send_config->rtp.ssrcs[0];
2050 2081
2051 encoder_config->max_bitrate_bps = 2000000; 2082 encoder_config->max_bitrate_bps = 2000000;
2052 2083
2053 ASSERT_EQ(1u, receive_configs->size()); 2084 ASSERT_EQ(1u, receive_configs->size());
2054 (*receive_configs)[0].rtp.remb = false;
2055 (*receive_configs)[0].rtp.transport_cc = true;
2056 (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions;
2057 RtpRtcp::Configuration config; 2085 RtpRtcp::Configuration config;
2058 config.receiver_only = true; 2086 config.receiver_only = true;
2059 config.clock = clock_; 2087 config.clock = clock_;
2060 config.outgoing_transport = receive_transport_; 2088 config.outgoing_transport = receive_transport_;
2061 config.retransmission_rate_limiter = &retransmission_rate_limiter_; 2089 config.retransmission_rate_limiter = &retransmission_rate_limiter_;
2062 rtp_rtcp_.reset(RtpRtcp::CreateRtpRtcp(config)); 2090 rtp_rtcp_.reset(RtpRtcp::CreateRtpRtcp(config));
2063 rtp_rtcp_->SetRemoteSSRC((*receive_configs)[0].rtp.remote_ssrc); 2091 rtp_rtcp_->SetRemoteSSRC((*receive_configs)[0].rtp.remote_ssrc);
2064 rtp_rtcp_->SetSSRC((*receive_configs)[0].rtp.local_ssrc); 2092 rtp_rtcp_->SetSSRC((*receive_configs)[0].rtp.local_ssrc);
2065 rtp_rtcp_->SetREMBStatus(true); 2093 rtp_rtcp_->SetREMBStatus(true);
2066 rtp_rtcp_->SetSendingStatus(true); 2094 rtp_rtcp_->SetSendingStatus(true);
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
2300 bool MinNumberOfFramesReceived() const { 2328 bool MinNumberOfFramesReceived() const {
2301 const int kMinRequiredHistogramSamples = 200; 2329 const int kMinRequiredHistogramSamples = 200;
2302 rtc::CritScope lock(&crit_); 2330 rtc::CritScope lock(&crit_);
2303 return num_frames_received_ > kMinRequiredHistogramSamples; 2331 return num_frames_received_ > kMinRequiredHistogramSamples;
2304 } 2332 }
2305 2333
2306 void ModifyVideoConfigs( 2334 void ModifyVideoConfigs(
2307 VideoSendStream::Config* send_config, 2335 VideoSendStream::Config* send_config,
2308 std::vector<VideoReceiveStream::Config>* receive_configs, 2336 std::vector<VideoReceiveStream::Config>* receive_configs,
2309 VideoEncoderConfig* encoder_config) override { 2337 VideoEncoderConfig* encoder_config) override {
2310 static const int kExtensionId = 8;
2311 send_config->rtp.extensions.push_back(RtpExtension(
2312 RtpExtension::kTransportSequenceNumberUri, kExtensionId));
2313 (*receive_configs)[0].rtp.extensions.push_back(RtpExtension(
2314 RtpExtension::kTransportSequenceNumberUri, kExtensionId));
2315 // NACK 2338 // NACK
2316 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 2339 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
2317 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 2340 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
2318 (*receive_configs)[0].renderer = this; 2341 (*receive_configs)[0].renderer = this;
2319 // FEC 2342 // FEC
2320 if (use_red_) { 2343 if (use_red_) {
2321 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; 2344 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType;
2322 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; 2345 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType;
2323 send_config->encoder_settings.encoder = vp8_encoder_.get(); 2346 send_config->encoder_settings.encoder = vp8_encoder_.get();
2324 send_config->encoder_settings.payload_name = "VP8"; 2347 send_config->encoder_settings.payload_name = "VP8";
(...skipping 1642 matching lines...) Expand 10 before | Expand all | Expand 10 after
3967 : EndToEndTest(kDefaultTimeoutMs), 3990 : EndToEndTest(kDefaultTimeoutMs),
3968 video_observed_(false), 3991 video_observed_(false),
3969 audio_observed_(false) { 3992 audio_observed_(false) {
3970 parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber, 3993 parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber,
3971 kExtensionId); 3994 kExtensionId);
3972 } 3995 }
3973 3996
3974 size_t GetNumVideoStreams() const override { return 1; } 3997 size_t GetNumVideoStreams() const override { return 1; }
3975 size_t GetNumAudioStreams() const override { return 1; } 3998 size_t GetNumAudioStreams() const override { return 1; }
3976 3999
3977 void ModifyVideoConfigs(
3978 VideoSendStream::Config* send_config,
3979 std::vector<VideoReceiveStream::Config>* receive_configs,
3980 VideoEncoderConfig* encoder_config) override {
3981 send_config->rtp.extensions.clear();
3982 send_config->rtp.extensions.push_back(RtpExtension(
3983 RtpExtension::kTransportSequenceNumberUri, kExtensionId));
3984 (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions;
3985 }
3986
3987 void ModifyAudioConfigs( 4000 void ModifyAudioConfigs(
3988 AudioSendStream::Config* send_config, 4001 AudioSendStream::Config* send_config,
3989 std::vector<AudioReceiveStream::Config>* receive_configs) override { 4002 std::vector<AudioReceiveStream::Config>* receive_configs) override {
3990 send_config->rtp.extensions.clear(); 4003 send_config->rtp.extensions.clear();
3991 send_config->rtp.extensions.push_back(RtpExtension( 4004 send_config->rtp.extensions.push_back(RtpExtension(
3992 RtpExtension::kTransportSequenceNumberUri, kExtensionId)); 4005 RtpExtension::kTransportSequenceNumberUri, kExtensionId));
3993 (*receive_configs)[0].rtp.extensions.clear(); 4006 (*receive_configs)[0].rtp.extensions.clear();
3994 (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions; 4007 (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions;
3995 } 4008 }
3996 4009
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
4126 std::unique_ptr<VideoEncoder> encoder_; 4139 std::unique_ptr<VideoEncoder> encoder_;
4127 std::unique_ptr<VideoDecoder> decoder_; 4140 std::unique_ptr<VideoDecoder> decoder_;
4128 rtc::CriticalSection crit_; 4141 rtc::CriticalSection crit_;
4129 int recorded_frames_ GUARDED_BY(crit_); 4142 int recorded_frames_ GUARDED_BY(crit_);
4130 } test(this); 4143 } test(this);
4131 4144
4132 RunBaseTest(&test); 4145 RunBaseTest(&test);
4133 } 4146 }
4134 4147
4135 } // namespace webrtc 4148 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698