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

Side by Side Diff: webrtc/video/video_send_stream_tests.cc

Issue 1537273003: Step 1 to prepare call_test.* for combined audio/video tests. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Cleanups Created 5 years 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
« no previous file with comments | « webrtc/video/video_quality_test.cc ('k') | webrtc/webrtc_tests.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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> // max 10 #include <algorithm> // max
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 uint8_t num_spatial_layers); 63 uint8_t num_spatial_layers);
64 }; 64 };
65 65
66 TEST_F(VideoSendStreamTest, CanStartStartedStream) { 66 TEST_F(VideoSendStreamTest, CanStartStartedStream) {
67 Call::Config call_config; 67 Call::Config call_config;
68 CreateSenderCall(call_config); 68 CreateSenderCall(call_config);
69 69
70 test::NullTransport transport; 70 test::NullTransport transport;
71 CreateSendConfig(1, &transport); 71 CreateSendConfig(1, &transport);
72 CreateStreams(); 72 CreateStreams();
73 send_stream_->Start(); 73 video_send_stream_->Start();
74 send_stream_->Start(); 74 video_send_stream_->Start();
75 DestroyStreams(); 75 DestroyStreams();
76 } 76 }
77 77
78 TEST_F(VideoSendStreamTest, CanStopStoppedStream) { 78 TEST_F(VideoSendStreamTest, CanStopStoppedStream) {
79 Call::Config call_config; 79 Call::Config call_config;
80 CreateSenderCall(call_config); 80 CreateSenderCall(call_config);
81 81
82 test::NullTransport transport; 82 test::NullTransport transport;
83 CreateSendConfig(1, &transport); 83 CreateSendConfig(1, &transport);
84 CreateStreams(); 84 CreateStreams();
85 send_stream_->Stop(); 85 video_send_stream_->Stop();
86 send_stream_->Stop(); 86 video_send_stream_->Stop();
87 DestroyStreams(); 87 DestroyStreams();
88 } 88 }
89 89
90 TEST_F(VideoSendStreamTest, SupportsCName) { 90 TEST_F(VideoSendStreamTest, SupportsCName) {
91 static std::string kCName = "PjQatC14dGfbVwGPUOA9IH7RlsFDbWl4AhXEiDsBizo="; 91 static std::string kCName = "PjQatC14dGfbVwGPUOA9IH7RlsFDbWl4AhXEiDsBizo=";
92 class CNameObserver : public test::SendTest { 92 class CNameObserver : public test::SendTest {
93 public: 93 public:
94 CNameObserver() : SendTest(kDefaultTimeoutMs) {} 94 CNameObserver() : SendTest(kDefaultTimeoutMs) {}
95 95
96 private: 96 private:
97 Action OnSendRtcp(const uint8_t* packet, size_t length) override { 97 Action OnSendRtcp(const uint8_t* packet, size_t length) override {
98 RTCPUtility::RTCPParserV2 parser(packet, length, true); 98 RTCPUtility::RTCPParserV2 parser(packet, length, true);
99 EXPECT_TRUE(parser.IsValid()); 99 EXPECT_TRUE(parser.IsValid());
100 100
101 RTCPUtility::RTCPPacketTypes packet_type = parser.Begin(); 101 RTCPUtility::RTCPPacketTypes packet_type = parser.Begin();
102 while (packet_type != RTCPUtility::RTCPPacketTypes::kInvalid) { 102 while (packet_type != RTCPUtility::RTCPPacketTypes::kInvalid) {
103 if (packet_type == RTCPUtility::RTCPPacketTypes::kSdesChunk) { 103 if (packet_type == RTCPUtility::RTCPPacketTypes::kSdesChunk) {
104 EXPECT_EQ(parser.Packet().CName.CName, kCName); 104 EXPECT_EQ(parser.Packet().CName.CName, kCName);
105 observation_complete_.Set(); 105 observation_complete_.Set();
106 } 106 }
107 107
108 packet_type = parser.Iterate(); 108 packet_type = parser.Iterate();
109 } 109 }
110 110
111 return SEND_PACKET; 111 return SEND_PACKET;
112 } 112 }
113 113
114 void ModifyConfigs(VideoSendStream::Config* send_config, 114 void ModifyVideoConfigs(
115 std::vector<VideoReceiveStream::Config>* receive_configs, 115 VideoSendStream::Config* send_config,
116 VideoEncoderConfig* encoder_config) override { 116 std::vector<VideoReceiveStream::Config>* receive_configs,
117 VideoEncoderConfig* encoder_config) override {
117 send_config->rtp.c_name = kCName; 118 send_config->rtp.c_name = kCName;
118 } 119 }
119 120
120 void PerformTest() override { 121 void PerformTest() override {
121 EXPECT_TRUE(Wait()) << "Timed out while waiting for RTCP with CNAME."; 122 EXPECT_TRUE(Wait()) << "Timed out while waiting for RTCP with CNAME.";
122 } 123 }
123 } test; 124 } test;
124 125
125 RunBaseTest(&test, FakeNetworkPipe::Config()); 126 RunBaseTest(&test, FakeNetworkPipe::Config());
126 } 127 }
(...skipping 12 matching lines...) Expand all
139 140
140 EXPECT_FALSE(header.extension.hasTransmissionTimeOffset); 141 EXPECT_FALSE(header.extension.hasTransmissionTimeOffset);
141 EXPECT_TRUE(header.extension.hasAbsoluteSendTime); 142 EXPECT_TRUE(header.extension.hasAbsoluteSendTime);
142 EXPECT_EQ(header.extension.transmissionTimeOffset, 0); 143 EXPECT_EQ(header.extension.transmissionTimeOffset, 0);
143 EXPECT_GT(header.extension.absoluteSendTime, 0u); 144 EXPECT_GT(header.extension.absoluteSendTime, 0u);
144 observation_complete_.Set(); 145 observation_complete_.Set();
145 146
146 return SEND_PACKET; 147 return SEND_PACKET;
147 } 148 }
148 149
149 void ModifyConfigs(VideoSendStream::Config* send_config, 150 void ModifyVideoConfigs(
150 std::vector<VideoReceiveStream::Config>* receive_configs, 151 VideoSendStream::Config* send_config,
151 VideoEncoderConfig* encoder_config) override { 152 std::vector<VideoReceiveStream::Config>* receive_configs,
153 VideoEncoderConfig* encoder_config) override {
152 send_config->rtp.extensions.clear(); 154 send_config->rtp.extensions.clear();
153 send_config->rtp.extensions.push_back(RtpExtension( 155 send_config->rtp.extensions.push_back(RtpExtension(
154 RtpExtension::kAbsSendTime, test::kAbsSendTimeExtensionId)); 156 RtpExtension::kAbsSendTime, test::kAbsSendTimeExtensionId));
155 } 157 }
156 158
157 void PerformTest() override { 159 void PerformTest() override {
158 EXPECT_TRUE(Wait()) << "Timed out while waiting for single RTP packet."; 160 EXPECT_TRUE(Wait()) << "Timed out while waiting for single RTP packet.";
159 } 161 }
160 } test; 162 } test;
161 163
(...skipping 18 matching lines...) Expand all
180 182
181 EXPECT_TRUE(header.extension.hasTransmissionTimeOffset); 183 EXPECT_TRUE(header.extension.hasTransmissionTimeOffset);
182 EXPECT_FALSE(header.extension.hasAbsoluteSendTime); 184 EXPECT_FALSE(header.extension.hasAbsoluteSendTime);
183 EXPECT_GT(header.extension.transmissionTimeOffset, 0); 185 EXPECT_GT(header.extension.transmissionTimeOffset, 0);
184 EXPECT_EQ(header.extension.absoluteSendTime, 0u); 186 EXPECT_EQ(header.extension.absoluteSendTime, 0u);
185 observation_complete_.Set(); 187 observation_complete_.Set();
186 188
187 return SEND_PACKET; 189 return SEND_PACKET;
188 } 190 }
189 191
190 void ModifyConfigs(VideoSendStream::Config* send_config, 192 void ModifyVideoConfigs(
191 std::vector<VideoReceiveStream::Config>* receive_configs, 193 VideoSendStream::Config* send_config,
192 VideoEncoderConfig* encoder_config) override { 194 std::vector<VideoReceiveStream::Config>* receive_configs,
195 VideoEncoderConfig* encoder_config) override {
193 send_config->encoder_settings.encoder = &encoder_; 196 send_config->encoder_settings.encoder = &encoder_;
194 send_config->rtp.extensions.clear(); 197 send_config->rtp.extensions.clear();
195 send_config->rtp.extensions.push_back( 198 send_config->rtp.extensions.push_back(
196 RtpExtension(RtpExtension::kTOffset, test::kTOffsetExtensionId)); 199 RtpExtension(RtpExtension::kTOffset, test::kTOffsetExtensionId));
197 } 200 }
198 201
199 void PerformTest() override { 202 void PerformTest() override {
200 EXPECT_TRUE(Wait()) << "Timed out while waiting for a single RTP packet."; 203 EXPECT_TRUE(Wait()) << "Timed out while waiting for a single RTP packet.";
201 } 204 }
202 205
(...skipping 20 matching lines...) Expand all
223 226
224 EXPECT_TRUE(header.extension.hasTransportSequenceNumber); 227 EXPECT_TRUE(header.extension.hasTransportSequenceNumber);
225 EXPECT_FALSE(header.extension.hasTransmissionTimeOffset); 228 EXPECT_FALSE(header.extension.hasTransmissionTimeOffset);
226 EXPECT_FALSE(header.extension.hasAbsoluteSendTime); 229 EXPECT_FALSE(header.extension.hasAbsoluteSendTime);
227 230
228 observation_complete_.Set(); 231 observation_complete_.Set();
229 232
230 return SEND_PACKET; 233 return SEND_PACKET;
231 } 234 }
232 235
233 void ModifyConfigs(VideoSendStream::Config* send_config, 236 void ModifyVideoConfigs(
234 std::vector<VideoReceiveStream::Config>* receive_configs, 237 VideoSendStream::Config* send_config,
235 VideoEncoderConfig* encoder_config) override { 238 std::vector<VideoReceiveStream::Config>* receive_configs,
239 VideoEncoderConfig* encoder_config) override {
236 send_config->encoder_settings.encoder = &encoder_; 240 send_config->encoder_settings.encoder = &encoder_;
237 send_config->rtp.extensions.clear(); 241 send_config->rtp.extensions.clear();
238 send_config->rtp.extensions.push_back( 242 send_config->rtp.extensions.push_back(
239 RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId)); 243 RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId));
240 } 244 }
241 245
242 void PerformTest() override { 246 void PerformTest() override {
243 EXPECT_TRUE(Wait()) << "Timed out while waiting for a single RTP packet."; 247 EXPECT_TRUE(Wait()) << "Timed out while waiting for a single RTP packet.";
244 } 248 }
245 249
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 } 380 }
377 381
378 if (received_media_ && received_fec_ && send_count_ > 100) 382 if (received_media_ && received_fec_ && send_count_ > 100)
379 observation_complete_.Set(); 383 observation_complete_.Set();
380 384
381 prev_header_ = header; 385 prev_header_ = header;
382 386
383 return SEND_PACKET; 387 return SEND_PACKET;
384 } 388 }
385 389
386 void ModifyConfigs(VideoSendStream::Config* send_config, 390 void ModifyVideoConfigs(
387 std::vector<VideoReceiveStream::Config>* receive_configs, 391 VideoSendStream::Config* send_config,
388 VideoEncoderConfig* encoder_config) override { 392 std::vector<VideoReceiveStream::Config>* receive_configs,
393 VideoEncoderConfig* encoder_config) override {
389 transport_adapter_.reset( 394 transport_adapter_.reset(
390 new internal::TransportAdapter(send_config->send_transport)); 395 new internal::TransportAdapter(send_config->send_transport));
391 transport_adapter_->Enable(); 396 transport_adapter_->Enable();
392 send_config->rtp.fec.red_payload_type = 397 send_config->rtp.fec.red_payload_type =
393 VideoSendStreamTest::kRedPayloadType; 398 VideoSendStreamTest::kRedPayloadType;
394 send_config->rtp.fec.ulpfec_payload_type = 399 send_config->rtp.fec.ulpfec_payload_type =
395 VideoSendStreamTest::kUlpfecPayloadType; 400 VideoSendStreamTest::kUlpfecPayloadType;
396 if (header_extensions_enabled_) { 401 if (header_extensions_enabled_) {
397 send_config->rtp.extensions.push_back(RtpExtension( 402 send_config->rtp.extensions.push_back(RtpExtension(
398 RtpExtension::kAbsSendTime, test::kAbsSendTimeExtensionId)); 403 RtpExtension::kAbsSendTime, test::kAbsSendTimeExtensionId));
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 480
476 if (sequence_number == nacked_sequence_number_) { 481 if (sequence_number == nacked_sequence_number_) {
477 EXPECT_EQ(retransmit_ssrc_, header.ssrc); 482 EXPECT_EQ(retransmit_ssrc_, header.ssrc);
478 EXPECT_EQ(retransmit_payload_type_, header.payloadType); 483 EXPECT_EQ(retransmit_payload_type_, header.payloadType);
479 observation_complete_.Set(); 484 observation_complete_.Set();
480 } 485 }
481 486
482 return SEND_PACKET; 487 return SEND_PACKET;
483 } 488 }
484 489
485 void ModifyConfigs(VideoSendStream::Config* send_config, 490 void ModifyVideoConfigs(
486 std::vector<VideoReceiveStream::Config>* receive_configs, 491 VideoSendStream::Config* send_config,
487 VideoEncoderConfig* encoder_config) override { 492 std::vector<VideoReceiveStream::Config>* receive_configs,
493 VideoEncoderConfig* encoder_config) override {
488 transport_adapter_.reset( 494 transport_adapter_.reset(
489 new internal::TransportAdapter(send_config->send_transport)); 495 new internal::TransportAdapter(send_config->send_transport));
490 transport_adapter_->Enable(); 496 transport_adapter_->Enable();
491 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 497 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
492 send_config->rtp.rtx.payload_type = retransmit_payload_type_; 498 send_config->rtp.rtx.payload_type = retransmit_payload_type_;
493 if (retransmit_ssrc_ != kSendSsrcs[0]) 499 if (retransmit_ssrc_ != kSendSsrcs[0])
494 send_config->rtp.rtx.ssrcs.push_back(retransmit_ssrc_); 500 send_config->rtp.rtx.ssrcs.push_back(retransmit_ssrc_);
495 } 501 }
496 502
497 void PerformTest() override { 503 void PerformTest() override {
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 encoder_.SetFrameSize(static_cast<size_t>(current_size_frame_.Value())); 665 encoder_.SetFrameSize(static_cast<size_t>(current_size_frame_.Value()));
660 } 666 }
661 667
662 Call::Config GetSenderCallConfig() override { 668 Call::Config GetSenderCallConfig() override {
663 Call::Config config; 669 Call::Config config;
664 const int kMinBitrateBps = 30000; 670 const int kMinBitrateBps = 30000;
665 config.bitrate_config.min_bitrate_bps = kMinBitrateBps; 671 config.bitrate_config.min_bitrate_bps = kMinBitrateBps;
666 return config; 672 return config;
667 } 673 }
668 674
669 void ModifyConfigs(VideoSendStream::Config* send_config, 675 void ModifyVideoConfigs(
670 std::vector<VideoReceiveStream::Config>* receive_configs, 676 VideoSendStream::Config* send_config,
671 VideoEncoderConfig* encoder_config) override { 677 std::vector<VideoReceiveStream::Config>* receive_configs,
678 VideoEncoderConfig* encoder_config) override {
672 transport_adapter_.reset( 679 transport_adapter_.reset(
673 new internal::TransportAdapter(send_config->send_transport)); 680 new internal::TransportAdapter(send_config->send_transport));
674 transport_adapter_->Enable(); 681 transport_adapter_->Enable();
675 if (use_fec_) { 682 if (use_fec_) {
676 send_config->rtp.fec.red_payload_type = kRedPayloadType; 683 send_config->rtp.fec.red_payload_type = kRedPayloadType;
677 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; 684 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType;
678 } 685 }
679 686
680 if (!test_generic_packetization_) 687 if (!test_generic_packetization_)
681 send_config->encoder_settings.payload_name = "VP8"; 688 send_config->encoder_settings.payload_name = "VP8";
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 void set_low_remb_bps(int value) { 820 void set_low_remb_bps(int value) {
814 rtc::CritScope lock(&crit_); 821 rtc::CritScope lock(&crit_);
815 low_remb_bps_ = value; 822 low_remb_bps_ = value;
816 } 823 }
817 824
818 void set_high_remb_bps(int value) { 825 void set_high_remb_bps(int value) {
819 rtc::CritScope lock(&crit_); 826 rtc::CritScope lock(&crit_);
820 high_remb_bps_ = value; 827 high_remb_bps_ = value;
821 } 828 }
822 829
823 void OnStreamsCreated( 830 void OnVideoStreamsCreated(
824 VideoSendStream* send_stream, 831 VideoSendStream* send_stream,
825 const std::vector<VideoReceiveStream*>& receive_streams) override { 832 const std::vector<VideoReceiveStream*>& receive_streams) override {
826 stream_ = send_stream; 833 stream_ = send_stream;
827 } 834 }
828 835
829 void ModifyConfigs(VideoSendStream::Config* send_config, 836 void ModifyVideoConfigs(
830 std::vector<VideoReceiveStream::Config>* receive_configs, 837 VideoSendStream::Config* send_config,
831 VideoEncoderConfig* encoder_config) override { 838 std::vector<VideoReceiveStream::Config>* receive_configs,
839 VideoEncoderConfig* encoder_config) override {
832 transport_adapter_.reset( 840 transport_adapter_.reset(
833 new internal::TransportAdapter(send_config->send_transport)); 841 new internal::TransportAdapter(send_config->send_transport));
834 transport_adapter_->Enable(); 842 transport_adapter_->Enable();
835 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 843 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
836 send_config->pre_encode_callback = this; 844 send_config->pre_encode_callback = this;
837 send_config->suspend_below_min_bitrate = true; 845 send_config->suspend_below_min_bitrate = true;
838 int min_bitrate_bps = encoder_config->streams[0].min_bitrate_bps; 846 int min_bitrate_bps = encoder_config->streams[0].min_bitrate_bps;
839 set_low_remb_bps(min_bitrate_bps - 10000); 847 set_low_remb_bps(min_bitrate_bps - 10000);
840 int threshold_window = std::max(min_bitrate_bps / 10, 10000); 848 int threshold_window = std::max(min_bitrate_bps / 10, 10000);
841 ASSERT_GT(encoder_config->streams[0].max_bitrate_bps, 849 ASSERT_GT(encoder_config->streams[0].max_bitrate_bps,
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 bitrate_capped_ = true; 1011 bitrate_capped_ = true;
1004 } else if (bitrate_capped_ && 1012 } else if (bitrate_capped_ &&
1005 total_bitrate_bps < kRembRespectedBitrateBps) { 1013 total_bitrate_bps < kRembRespectedBitrateBps) {
1006 observation_complete_.Set(); 1014 observation_complete_.Set();
1007 } 1015 }
1008 } 1016 }
1009 // Packets don't have to be delivered since the test is the receiver. 1017 // Packets don't have to be delivered since the test is the receiver.
1010 return DROP_PACKET; 1018 return DROP_PACKET;
1011 } 1019 }
1012 1020
1013 void OnStreamsCreated( 1021 void OnVideoStreamsCreated(
1014 VideoSendStream* send_stream, 1022 VideoSendStream* send_stream,
1015 const std::vector<VideoReceiveStream*>& receive_streams) override { 1023 const std::vector<VideoReceiveStream*>& receive_streams) override {
1016 stream_ = send_stream; 1024 stream_ = send_stream;
1017 RtpRtcp::Configuration config; 1025 RtpRtcp::Configuration config;
1018 config.outgoing_transport = feedback_transport_.get(); 1026 config.outgoing_transport = feedback_transport_.get();
1019 rtp_rtcp_.reset(RtpRtcp::CreateRtpRtcp(config)); 1027 rtp_rtcp_.reset(RtpRtcp::CreateRtpRtcp(config));
1020 rtp_rtcp_->SetREMBStatus(true); 1028 rtp_rtcp_->SetREMBStatus(true);
1021 rtp_rtcp_->SetRTCPStatus(RtcpMode::kReducedSize); 1029 rtp_rtcp_->SetRTCPStatus(RtcpMode::kReducedSize);
1022 } 1030 }
1023 1031
1024 void ModifyConfigs(VideoSendStream::Config* send_config, 1032 void ModifyVideoConfigs(
1025 std::vector<VideoReceiveStream::Config>* receive_configs, 1033 VideoSendStream::Config* send_config,
1026 VideoEncoderConfig* encoder_config) override { 1034 std::vector<VideoReceiveStream::Config>* receive_configs,
1035 VideoEncoderConfig* encoder_config) override {
1027 feedback_transport_.reset( 1036 feedback_transport_.reset(
1028 new internal::TransportAdapter(send_config->send_transport)); 1037 new internal::TransportAdapter(send_config->send_transport));
1029 feedback_transport_->Enable(); 1038 feedback_transport_->Enable();
1030 encoder_config->min_transmit_bitrate_bps = kMinTransmitBitrateBps; 1039 encoder_config->min_transmit_bitrate_bps = kMinTransmitBitrateBps;
1031 } 1040 }
1032 1041
1033 void PerformTest() override { 1042 void PerformTest() override {
1034 EXPECT_TRUE(Wait()) 1043 EXPECT_TRUE(Wait())
1035 << "Timeout while waiting for low bitrate stats after REMB."; 1044 << "Timeout while waiting for low bitrate stats after REMB.";
1036 } 1045 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1073 int start_bitrate_kbps_ GUARDED_BY(crit_); 1082 int start_bitrate_kbps_ GUARDED_BY(crit_);
1074 }; 1083 };
1075 1084
1076 CreateSenderCall(Call::Config()); 1085 CreateSenderCall(Call::Config());
1077 1086
1078 test::NullTransport transport; 1087 test::NullTransport transport;
1079 CreateSendConfig(1, &transport); 1088 CreateSendConfig(1, &transport);
1080 1089
1081 Call::Config::BitrateConfig bitrate_config; 1090 Call::Config::BitrateConfig bitrate_config;
1082 bitrate_config.start_bitrate_bps = 1091 bitrate_config.start_bitrate_bps =
1083 2 * encoder_config_.streams[0].max_bitrate_bps; 1092 2 * video_encoder_config_.streams[0].max_bitrate_bps;
1084 sender_call_->SetBitrateConfig(bitrate_config); 1093 sender_call_->SetBitrateConfig(bitrate_config);
1085 1094
1086 StartBitrateObserver encoder; 1095 StartBitrateObserver encoder;
1087 send_config_.encoder_settings.encoder = &encoder; 1096 video_send_config_.encoder_settings.encoder = &encoder;
1088 1097
1089 CreateStreams(); 1098 CreateStreams();
1090 1099
1091 EXPECT_EQ(encoder_config_.streams[0].max_bitrate_bps / 1000, 1100 EXPECT_EQ(video_encoder_config_.streams[0].max_bitrate_bps / 1000,
1092 encoder.GetStartBitrateKbps()); 1101 encoder.GetStartBitrateKbps());
1093 1102
1094 encoder_config_.streams[0].max_bitrate_bps = 1103 video_encoder_config_.streams[0].max_bitrate_bps =
1095 2 * bitrate_config.start_bitrate_bps; 1104 2 * bitrate_config.start_bitrate_bps;
1096 send_stream_->ReconfigureVideoEncoder(encoder_config_); 1105 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_);
1097 1106
1098 // New bitrate should be reconfigured above the previous max. As there's no 1107 // New bitrate should be reconfigured above the previous max. As there's no
1099 // network connection this shouldn't be flaky, as no bitrate should've been 1108 // network connection this shouldn't be flaky, as no bitrate should've been
1100 // reported in between. 1109 // reported in between.
1101 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000, 1110 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000,
1102 encoder.GetStartBitrateKbps()); 1111 encoder.GetStartBitrateKbps());
1103 1112
1104 DestroyStreams(); 1113 DestroyStreams();
1105 } 1114 }
1106 1115
(...skipping 24 matching lines...) Expand all
1131 // Indicate an output frame has arrived. 1140 // Indicate an output frame has arrived.
1132 rtc::Event output_frame_event_; 1141 rtc::Event output_frame_event_;
1133 }; 1142 };
1134 1143
1135 // Initialize send stream. 1144 // Initialize send stream.
1136 CreateSenderCall(Call::Config()); 1145 CreateSenderCall(Call::Config());
1137 1146
1138 test::NullTransport transport; 1147 test::NullTransport transport;
1139 CreateSendConfig(1, &transport); 1148 CreateSendConfig(1, &transport);
1140 FrameObserver observer; 1149 FrameObserver observer;
1141 send_config_.pre_encode_callback = &observer; 1150 video_send_config_.pre_encode_callback = &observer;
1142 CreateStreams(); 1151 CreateStreams();
1143 1152
1144 // Prepare five input frames. Send ordinary VideoFrame and texture frames 1153 // Prepare five input frames. Send ordinary VideoFrame and texture frames
1145 // alternatively. 1154 // alternatively.
1146 std::vector<VideoFrame> input_frames; 1155 std::vector<VideoFrame> input_frames;
1147 int width = static_cast<int>(encoder_config_.streams[0].width); 1156 int width = static_cast<int>(video_encoder_config_.streams[0].width);
1148 int height = static_cast<int>(encoder_config_.streams[0].height); 1157 int height = static_cast<int>(video_encoder_config_.streams[0].height);
1149 test::FakeNativeHandle* handle1 = new test::FakeNativeHandle(); 1158 test::FakeNativeHandle* handle1 = new test::FakeNativeHandle();
1150 test::FakeNativeHandle* handle2 = new test::FakeNativeHandle(); 1159 test::FakeNativeHandle* handle2 = new test::FakeNativeHandle();
1151 test::FakeNativeHandle* handle3 = new test::FakeNativeHandle(); 1160 test::FakeNativeHandle* handle3 = new test::FakeNativeHandle();
1152 input_frames.push_back(test::CreateFakeNativeHandleFrame( 1161 input_frames.push_back(test::CreateFakeNativeHandleFrame(
1153 handle1, width, height, 1, 1, kVideoRotation_0)); 1162 handle1, width, height, 1, 1, kVideoRotation_0));
1154 input_frames.push_back(test::CreateFakeNativeHandleFrame( 1163 input_frames.push_back(test::CreateFakeNativeHandleFrame(
1155 handle2, width, height, 2, 2, kVideoRotation_0)); 1164 handle2, width, height, 2, 2, kVideoRotation_0));
1156 input_frames.push_back(CreateVideoFrame(width, height, 3)); 1165 input_frames.push_back(CreateVideoFrame(width, height, 3));
1157 input_frames.push_back(CreateVideoFrame(width, height, 4)); 1166 input_frames.push_back(CreateVideoFrame(width, height, 4));
1158 input_frames.push_back(test::CreateFakeNativeHandleFrame( 1167 input_frames.push_back(test::CreateFakeNativeHandleFrame(
1159 handle3, width, height, 5, 5, kVideoRotation_0)); 1168 handle3, width, height, 5, 5, kVideoRotation_0));
1160 1169
1161 send_stream_->Start(); 1170 video_send_stream_->Start();
1162 for (size_t i = 0; i < input_frames.size(); i++) { 1171 for (size_t i = 0; i < input_frames.size(); i++) {
1163 send_stream_->Input()->IncomingCapturedFrame(input_frames[i]); 1172 video_send_stream_->Input()->IncomingCapturedFrame(input_frames[i]);
1164 // Do not send the next frame too fast, so the frame dropper won't drop it. 1173 // Do not send the next frame too fast, so the frame dropper won't drop it.
1165 if (i < input_frames.size() - 1) 1174 if (i < input_frames.size() - 1)
1166 SleepMs(1000 / encoder_config_.streams[0].max_framerate); 1175 SleepMs(1000 / video_encoder_config_.streams[0].max_framerate);
1167 // Wait until the output frame is received before sending the next input 1176 // Wait until the output frame is received before sending the next input
1168 // frame. Or the previous input frame may be replaced without delivering. 1177 // frame. Or the previous input frame may be replaced without delivering.
1169 observer.WaitOutputFrame(); 1178 observer.WaitOutputFrame();
1170 } 1179 }
1171 send_stream_->Stop(); 1180 video_send_stream_->Stop();
1172 1181
1173 // Test if the input and output frames are the same. render_time_ms and 1182 // Test if the input and output frames are the same. render_time_ms and
1174 // timestamp are not compared because capturer sets those values. 1183 // timestamp are not compared because capturer sets those values.
1175 ExpectEqualFramesVector(input_frames, observer.output_frames()); 1184 ExpectEqualFramesVector(input_frames, observer.output_frames());
1176 1185
1177 DestroyStreams(); 1186 DestroyStreams();
1178 } 1187 }
1179 1188
1180 void ExpectEqualFrames(const VideoFrame& frame1, const VideoFrame& frame2) { 1189 void ExpectEqualFrames(const VideoFrame& frame1, const VideoFrame& frame2) {
1181 if (frame1.native_handle() != nullptr || frame2.native_handle() != nullptr) 1190 if (frame1.native_handle() != nullptr || frame2.native_handle() != nullptr)
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 int32_t SetChannelParameters(uint32_t packetLoss, int64_t rtt) override { 1312 int32_t SetChannelParameters(uint32_t packetLoss, int64_t rtt) override {
1304 EXPECT_TRUE(IsReadyForEncode()); 1313 EXPECT_TRUE(IsReadyForEncode());
1305 return 0; 1314 return 0;
1306 } 1315 }
1307 1316
1308 int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override { 1317 int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override {
1309 EXPECT_TRUE(IsReadyForEncode()); 1318 EXPECT_TRUE(IsReadyForEncode());
1310 return 0; 1319 return 0;
1311 } 1320 }
1312 1321
1313 void OnStreamsCreated( 1322 void OnVideoStreamsCreated(
1314 VideoSendStream* send_stream, 1323 VideoSendStream* send_stream,
1315 const std::vector<VideoReceiveStream*>& receive_streams) override { 1324 const std::vector<VideoReceiveStream*>& receive_streams) override {
1316 // Encoder initialization should be done in stream construction before 1325 // Encoder initialization should be done in stream construction before
1317 // starting. 1326 // starting.
1318 EXPECT_TRUE(IsReadyForEncode()); 1327 EXPECT_TRUE(IsReadyForEncode());
1319 stream_ = send_stream; 1328 stream_ = send_stream;
1320 } 1329 }
1321 1330
1322 void ModifyConfigs(VideoSendStream::Config* send_config, 1331 void ModifyVideoConfigs(
1323 std::vector<VideoReceiveStream::Config>* receive_configs, 1332 VideoSendStream::Config* send_config,
1324 VideoEncoderConfig* encoder_config) override { 1333 std::vector<VideoReceiveStream::Config>* receive_configs,
1334 VideoEncoderConfig* encoder_config) override {
1325 send_config->encoder_settings.encoder = this; 1335 send_config->encoder_settings.encoder = this;
1326 encoder_config_ = *encoder_config; 1336 encoder_config_ = *encoder_config;
1327 } 1337 }
1328 1338
1329 void PerformTest() override { 1339 void PerformTest() override {
1330 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode."; 1340 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode.";
1331 EXPECT_EQ(0u, num_releases()); 1341 EXPECT_EQ(0u, num_releases());
1332 stream_->ReconfigureVideoEncoder(encoder_config_); 1342 stream_->ReconfigureVideoEncoder(encoder_config_);
1333 EXPECT_EQ(0u, num_releases()); 1343 EXPECT_EQ(0u, num_releases());
1334 stream_->Stop(); 1344 stream_->Stop();
(...skipping 23 matching lines...) Expand all
1358 TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) { 1368 TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) {
1359 class VideoCodecConfigObserver : public test::SendTest, 1369 class VideoCodecConfigObserver : public test::SendTest,
1360 public test::FakeEncoder { 1370 public test::FakeEncoder {
1361 public: 1371 public:
1362 VideoCodecConfigObserver() 1372 VideoCodecConfigObserver()
1363 : SendTest(kDefaultTimeoutMs), 1373 : SendTest(kDefaultTimeoutMs),
1364 FakeEncoder(Clock::GetRealTimeClock()), 1374 FakeEncoder(Clock::GetRealTimeClock()),
1365 num_initializations_(0) {} 1375 num_initializations_(0) {}
1366 1376
1367 private: 1377 private:
1368 void ModifyConfigs(VideoSendStream::Config* send_config, 1378 void ModifyVideoConfigs(
1369 std::vector<VideoReceiveStream::Config>* receive_configs, 1379 VideoSendStream::Config* send_config,
1370 VideoEncoderConfig* encoder_config) override { 1380 std::vector<VideoReceiveStream::Config>* receive_configs,
1381 VideoEncoderConfig* encoder_config) override {
1371 send_config->encoder_settings.encoder = this; 1382 send_config->encoder_settings.encoder = this;
1372 encoder_config_ = *encoder_config; 1383 encoder_config_ = *encoder_config;
1373 } 1384 }
1374 1385
1375 void OnStreamsCreated( 1386 void OnVideoStreamsCreated(
1376 VideoSendStream* send_stream, 1387 VideoSendStream* send_stream,
1377 const std::vector<VideoReceiveStream*>& receive_streams) override { 1388 const std::vector<VideoReceiveStream*>& receive_streams) override {
1378 stream_ = send_stream; 1389 stream_ = send_stream;
1379 } 1390 }
1380 1391
1381 int32_t InitEncode(const VideoCodec* config, 1392 int32_t InitEncode(const VideoCodec* config,
1382 int32_t number_of_cores, 1393 int32_t number_of_cores,
1383 size_t max_payload_size) override { 1394 size_t max_payload_size) override {
1384 if (num_initializations_ == 0) { 1395 if (num_initializations_ == 0) {
1385 // Verify default values. 1396 // Verify default values.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1419 const char* codec_name) 1430 const char* codec_name)
1420 : SendTest(VideoSendStreamTest::kDefaultTimeoutMs), 1431 : SendTest(VideoSendStreamTest::kDefaultTimeoutMs),
1421 FakeEncoder(Clock::GetRealTimeClock()), 1432 FakeEncoder(Clock::GetRealTimeClock()),
1422 video_codec_type_(video_codec_type), 1433 video_codec_type_(video_codec_type),
1423 codec_name_(codec_name), 1434 codec_name_(codec_name),
1424 num_initializations_(0) { 1435 num_initializations_(0) {
1425 memset(&encoder_settings_, 0, sizeof(encoder_settings_)); 1436 memset(&encoder_settings_, 0, sizeof(encoder_settings_));
1426 } 1437 }
1427 1438
1428 private: 1439 private:
1429 void ModifyConfigs(VideoSendStream::Config* send_config, 1440 void ModifyVideoConfigs(
1430 std::vector<VideoReceiveStream::Config>* receive_configs, 1441 VideoSendStream::Config* send_config,
1431 VideoEncoderConfig* encoder_config) override { 1442 std::vector<VideoReceiveStream::Config>* receive_configs,
1443 VideoEncoderConfig* encoder_config) override {
1432 send_config->encoder_settings.encoder = this; 1444 send_config->encoder_settings.encoder = this;
1433 send_config->encoder_settings.payload_name = codec_name_; 1445 send_config->encoder_settings.payload_name = codec_name_;
1434 1446
1435 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { 1447 for (size_t i = 0; i < encoder_config->streams.size(); ++i) {
1436 encoder_config->streams[i].temporal_layer_thresholds_bps.resize( 1448 encoder_config->streams[i].temporal_layer_thresholds_bps.resize(
1437 kVideoCodecConfigObserverNumberOfTemporalLayers - 1); 1449 kVideoCodecConfigObserverNumberOfTemporalLayers - 1);
1438 } 1450 }
1439 1451
1440 encoder_config->encoder_specific_settings = &encoder_settings_; 1452 encoder_config->encoder_specific_settings = &encoder_settings_;
1441 encoder_config_ = *encoder_config; 1453 encoder_config_ = *encoder_config;
1442 } 1454 }
1443 1455
1444 void OnStreamsCreated( 1456 void OnVideoStreamsCreated(
1445 VideoSendStream* send_stream, 1457 VideoSendStream* send_stream,
1446 const std::vector<VideoReceiveStream*>& receive_streams) override { 1458 const std::vector<VideoReceiveStream*>& receive_streams) override {
1447 stream_ = send_stream; 1459 stream_ = send_stream;
1448 } 1460 }
1449 1461
1450 int32_t InitEncode(const VideoCodec* config, 1462 int32_t InitEncode(const VideoCodec* config,
1451 int32_t number_of_cores, 1463 int32_t number_of_cores,
1452 size_t max_payload_size) override { 1464 size_t max_payload_size) override {
1453 EXPECT_EQ(video_codec_type_, config->codecType); 1465 EXPECT_EQ(video_codec_type_, config->codecType);
1454 VerifyCodecSpecifics(*config); 1466 VerifyCodecSpecifics(*config);
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
1611 private: 1623 private:
1612 int32_t InitEncode(const VideoCodec* config, 1624 int32_t InitEncode(const VideoCodec* config,
1613 int32_t number_of_cores, 1625 int32_t number_of_cores,
1614 size_t max_payload_size) override { 1626 size_t max_payload_size) override {
1615 EXPECT_EQ(static_cast<unsigned int>(kScreencastTargetBitrateKbps), 1627 EXPECT_EQ(static_cast<unsigned int>(kScreencastTargetBitrateKbps),
1616 config->targetBitrate); 1628 config->targetBitrate);
1617 observation_complete_.Set(); 1629 observation_complete_.Set();
1618 return test::FakeEncoder::InitEncode( 1630 return test::FakeEncoder::InitEncode(
1619 config, number_of_cores, max_payload_size); 1631 config, number_of_cores, max_payload_size);
1620 } 1632 }
1621 void ModifyConfigs(VideoSendStream::Config* send_config, 1633 void ModifyVideoConfigs(
1622 std::vector<VideoReceiveStream::Config>* receive_configs, 1634 VideoSendStream::Config* send_config,
1623 VideoEncoderConfig* encoder_config) override { 1635 std::vector<VideoReceiveStream::Config>* receive_configs,
1636 VideoEncoderConfig* encoder_config) override {
1624 send_config->encoder_settings.encoder = this; 1637 send_config->encoder_settings.encoder = this;
1625 EXPECT_EQ(1u, encoder_config->streams.size()); 1638 EXPECT_EQ(1u, encoder_config->streams.size());
1626 EXPECT_TRUE( 1639 EXPECT_TRUE(
1627 encoder_config->streams[0].temporal_layer_thresholds_bps.empty()); 1640 encoder_config->streams[0].temporal_layer_thresholds_bps.empty());
1628 encoder_config->streams[0].temporal_layer_thresholds_bps.push_back( 1641 encoder_config->streams[0].temporal_layer_thresholds_bps.push_back(
1629 kScreencastTargetBitrateKbps * 1000); 1642 kScreencastTargetBitrateKbps * 1000);
1630 encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen; 1643 encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen;
1631 } 1644 }
1632 1645
1633 void PerformTest() override { 1646 void PerformTest() override {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1687 } 1700 }
1688 1701
1689 Call::Config GetSenderCallConfig() override { 1702 Call::Config GetSenderCallConfig() override {
1690 Call::Config config; 1703 Call::Config config;
1691 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000; 1704 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000;
1692 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000; 1705 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000;
1693 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000; 1706 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000;
1694 return config; 1707 return config;
1695 } 1708 }
1696 1709
1697 void ModifyConfigs(VideoSendStream::Config* send_config, 1710 void ModifyVideoConfigs(
1698 std::vector<VideoReceiveStream::Config>* receive_configs, 1711 VideoSendStream::Config* send_config,
1699 VideoEncoderConfig* encoder_config) override { 1712 std::vector<VideoReceiveStream::Config>* receive_configs,
1713 VideoEncoderConfig* encoder_config) override {
1700 send_config->encoder_settings.encoder = this; 1714 send_config->encoder_settings.encoder = this;
1701 // Set bitrates lower/higher than min/max to make sure they are properly 1715 // Set bitrates lower/higher than min/max to make sure they are properly
1702 // capped. 1716 // capped.
1703 encoder_config->streams.front().min_bitrate_bps = kMinBitrateKbps * 1000; 1717 encoder_config->streams.front().min_bitrate_bps = kMinBitrateKbps * 1000;
1704 encoder_config->streams.front().max_bitrate_bps = kMaxBitrateKbps * 1000; 1718 encoder_config->streams.front().max_bitrate_bps = kMaxBitrateKbps * 1000;
1705 encoder_config_ = *encoder_config; 1719 encoder_config_ = *encoder_config;
1706 } 1720 }
1707 1721
1708 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { 1722 void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
1709 call_ = sender_call; 1723 call_ = sender_call;
1710 } 1724 }
1711 1725
1712 void OnStreamsCreated( 1726 void OnVideoStreamsCreated(
1713 VideoSendStream* send_stream, 1727 VideoSendStream* send_stream,
1714 const std::vector<VideoReceiveStream*>& receive_streams) override { 1728 const std::vector<VideoReceiveStream*>& receive_streams) override {
1715 send_stream_ = send_stream; 1729 send_stream_ = send_stream;
1716 } 1730 }
1717 1731
1718 void PerformTest() override { 1732 void PerformTest() override {
1719 Call::Config::BitrateConfig bitrate_config; 1733 Call::Config::BitrateConfig bitrate_config;
1720 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000; 1734 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000;
1721 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000; 1735 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000;
1722 call_->SetBitrateConfig(bitrate_config); 1736 call_->SetBitrateConfig(bitrate_config);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1779 encoded._encodedWidth = kEncodedResolution[i].width; 1793 encoded._encodedWidth = kEncodedResolution[i].width;
1780 encoded._encodedHeight = kEncodedResolution[i].height; 1794 encoded._encodedHeight = kEncodedResolution[i].height;
1781 RTC_DCHECK(callback_ != nullptr); 1795 RTC_DCHECK(callback_ != nullptr);
1782 if (callback_->Encoded(encoded, &specifics, nullptr) != 0) 1796 if (callback_->Encoded(encoded, &specifics, nullptr) != 0)
1783 return -1; 1797 return -1;
1784 } 1798 }
1785 1799
1786 observation_complete_.Set(); 1800 observation_complete_.Set();
1787 return 0; 1801 return 0;
1788 } 1802 }
1789 void ModifyConfigs(VideoSendStream::Config* send_config, 1803 void ModifyVideoConfigs(
1790 std::vector<VideoReceiveStream::Config>* receive_configs, 1804 VideoSendStream::Config* send_config,
1791 VideoEncoderConfig* encoder_config) override { 1805 std::vector<VideoReceiveStream::Config>* receive_configs,
1806 VideoEncoderConfig* encoder_config) override {
1792 send_config->encoder_settings.encoder = this; 1807 send_config->encoder_settings.encoder = this;
1793 EXPECT_EQ(kNumStreams, encoder_config->streams.size()); 1808 EXPECT_EQ(kNumStreams, encoder_config->streams.size());
1794 } 1809 }
1795 1810
1796 size_t GetNumStreams() const override { return kNumStreams; } 1811 size_t GetNumStreams() const override { return kNumStreams; }
1797 1812
1798 void PerformTest() override { 1813 void PerformTest() override {
1799 EXPECT_TRUE(Wait()) 1814 EXPECT_TRUE(Wait())
1800 << "Timed out while waiting for the encoder to send one frame."; 1815 << "Timed out while waiting for the encoder to send one frame.";
1801 VideoSendStream::Stats stats = send_stream_->GetStats(); 1816 VideoSendStream::Stats stats = send_stream_->GetStats();
1802 1817
1803 for (size_t i = 0; i < kNumStreams; ++i) { 1818 for (size_t i = 0; i < kNumStreams; ++i) {
1804 ASSERT_TRUE(stats.substreams.find(kSendSsrcs[i]) != 1819 ASSERT_TRUE(stats.substreams.find(kSendSsrcs[i]) !=
1805 stats.substreams.end()) 1820 stats.substreams.end())
1806 << "No stats for SSRC: " << kSendSsrcs[i] 1821 << "No stats for SSRC: " << kSendSsrcs[i]
1807 << ", stats should exist as soon as frames have been encoded."; 1822 << ", stats should exist as soon as frames have been encoded.";
1808 VideoSendStream::StreamStats ssrc_stats = 1823 VideoSendStream::StreamStats ssrc_stats =
1809 stats.substreams[kSendSsrcs[i]]; 1824 stats.substreams[kSendSsrcs[i]];
1810 EXPECT_EQ(kEncodedResolution[i].width, ssrc_stats.width); 1825 EXPECT_EQ(kEncodedResolution[i].width, ssrc_stats.width);
1811 EXPECT_EQ(kEncodedResolution[i].height, ssrc_stats.height); 1826 EXPECT_EQ(kEncodedResolution[i].height, ssrc_stats.height);
1812 } 1827 }
1813 } 1828 }
1814 1829
1815 void OnStreamsCreated( 1830 void OnVideoStreamsCreated(
1816 VideoSendStream* send_stream, 1831 VideoSendStream* send_stream,
1817 const std::vector<VideoReceiveStream*>& receive_streams) override { 1832 const std::vector<VideoReceiveStream*>& receive_streams) override {
1818 send_stream_ = send_stream; 1833 send_stream_ = send_stream;
1819 } 1834 }
1820 1835
1821 VideoSendStream* send_stream_; 1836 VideoSendStream* send_stream_;
1822 } test; 1837 } test;
1823 1838
1824 RunBaseTest(&test, FakeNetworkPipe::Config()); 1839 RunBaseTest(&test, FakeNetworkPipe::Config());
1825 } 1840 }
1826 1841
1827 class Vp9HeaderObserver : public test::SendTest { 1842 class Vp9HeaderObserver : public test::SendTest {
1828 public: 1843 public:
1829 Vp9HeaderObserver() 1844 Vp9HeaderObserver()
1830 : SendTest(VideoSendStreamTest::kLongTimeoutMs), 1845 : SendTest(VideoSendStreamTest::kLongTimeoutMs),
1831 vp9_encoder_(VP9Encoder::Create()), 1846 vp9_encoder_(VP9Encoder::Create()),
1832 vp9_settings_(VideoEncoder::GetDefaultVp9Settings()), 1847 vp9_settings_(VideoEncoder::GetDefaultVp9Settings()),
1833 packets_sent_(0), 1848 packets_sent_(0),
1834 frames_sent_(0) {} 1849 frames_sent_(0) {}
1835 1850
1836 virtual void ModifyConfigsHook( 1851 virtual void ModifyVideoConfigsHook(
1837 VideoSendStream::Config* send_config, 1852 VideoSendStream::Config* send_config,
1838 std::vector<VideoReceiveStream::Config>* receive_configs, 1853 std::vector<VideoReceiveStream::Config>* receive_configs,
1839 VideoEncoderConfig* encoder_config) {} 1854 VideoEncoderConfig* encoder_config) {}
1840 1855
1841 virtual void InspectHeader(const RTPVideoHeaderVP9& vp9) = 0; 1856 virtual void InspectHeader(const RTPVideoHeaderVP9& vp9) = 0;
1842 1857
1843 private: 1858 private:
1844 const int kVp9PayloadType = 105; 1859 const int kVp9PayloadType = 105;
1845 1860
1846 void ModifyConfigs(VideoSendStream::Config* send_config, 1861 void ModifyVideoConfigs(
1847 std::vector<VideoReceiveStream::Config>* receive_configs, 1862 VideoSendStream::Config* send_config,
1848 VideoEncoderConfig* encoder_config) override { 1863 std::vector<VideoReceiveStream::Config>* receive_configs,
1864 VideoEncoderConfig* encoder_config) override {
1849 encoder_config->encoder_specific_settings = &vp9_settings_; 1865 encoder_config->encoder_specific_settings = &vp9_settings_;
1850 send_config->encoder_settings.encoder = vp9_encoder_.get(); 1866 send_config->encoder_settings.encoder = vp9_encoder_.get();
1851 send_config->encoder_settings.payload_name = "VP9"; 1867 send_config->encoder_settings.payload_name = "VP9";
1852 send_config->encoder_settings.payload_type = kVp9PayloadType; 1868 send_config->encoder_settings.payload_type = kVp9PayloadType;
1853 ModifyConfigsHook(send_config, receive_configs, encoder_config); 1869 ModifyVideoConfigsHook(send_config, receive_configs, encoder_config);
1854 EXPECT_EQ(1u, encoder_config->streams.size()); 1870 EXPECT_EQ(1u, encoder_config->streams.size());
1855 encoder_config->streams[0].temporal_layer_thresholds_bps.resize( 1871 encoder_config->streams[0].temporal_layer_thresholds_bps.resize(
1856 vp9_settings_.numberOfTemporalLayers - 1); 1872 vp9_settings_.numberOfTemporalLayers - 1);
1857 encoder_config_ = *encoder_config; 1873 encoder_config_ = *encoder_config;
1858 } 1874 }
1859 1875
1860 void PerformTest() override { 1876 void PerformTest() override {
1861 EXPECT_TRUE(Wait()) << "Test timed out waiting for VP9 packet, num frames " 1877 EXPECT_TRUE(Wait()) << "Test timed out waiting for VP9 packet, num frames "
1862 << frames_sent_; 1878 << frames_sent_;
1863 } 1879 }
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
2134 static const size_t kNumFramesToSend = 100; 2150 static const size_t kNumFramesToSend = 100;
2135 // Set to < kNumFramesToSend and coprime to length of temporal layer 2151 // Set to < kNumFramesToSend and coprime to length of temporal layer
2136 // structures to verify temporal id reset on key frame. 2152 // structures to verify temporal id reset on key frame.
2137 static const int kKeyFrameInterval = 31; 2153 static const int kKeyFrameInterval = 31;
2138 class NonFlexibleMode : public Vp9HeaderObserver { 2154 class NonFlexibleMode : public Vp9HeaderObserver {
2139 public: 2155 public:
2140 NonFlexibleMode(uint8_t num_temporal_layers, uint8_t num_spatial_layers) 2156 NonFlexibleMode(uint8_t num_temporal_layers, uint8_t num_spatial_layers)
2141 : num_temporal_layers_(num_temporal_layers), 2157 : num_temporal_layers_(num_temporal_layers),
2142 num_spatial_layers_(num_spatial_layers), 2158 num_spatial_layers_(num_spatial_layers),
2143 l_field_(num_temporal_layers > 1 || num_spatial_layers > 1) {} 2159 l_field_(num_temporal_layers > 1 || num_spatial_layers > 1) {}
2144 void ModifyConfigsHook( 2160 void ModifyVideoConfigsHook(
2145 VideoSendStream::Config* send_config, 2161 VideoSendStream::Config* send_config,
2146 std::vector<VideoReceiveStream::Config>* receive_configs, 2162 std::vector<VideoReceiveStream::Config>* receive_configs,
2147 VideoEncoderConfig* encoder_config) override { 2163 VideoEncoderConfig* encoder_config) override {
2148 vp9_settings_.flexibleMode = false; 2164 vp9_settings_.flexibleMode = false;
2149 vp9_settings_.frameDroppingOn = false; 2165 vp9_settings_.frameDroppingOn = false;
2150 vp9_settings_.keyFrameInterval = kKeyFrameInterval; 2166 vp9_settings_.keyFrameInterval = kKeyFrameInterval;
2151 vp9_settings_.numberOfTemporalLayers = num_temporal_layers_; 2167 vp9_settings_.numberOfTemporalLayers = num_temporal_layers_;
2152 vp9_settings_.numberOfSpatialLayers = num_spatial_layers_; 2168 vp9_settings_.numberOfSpatialLayers = num_spatial_layers_;
2153 } 2169 }
2154 2170
(...skipping 19 matching lines...) Expand all
2174 const uint8_t num_temporal_layers_; 2190 const uint8_t num_temporal_layers_;
2175 const uint8_t num_spatial_layers_; 2191 const uint8_t num_spatial_layers_;
2176 const bool l_field_; 2192 const bool l_field_;
2177 } test(num_temporal_layers, num_spatial_layers); 2193 } test(num_temporal_layers, num_spatial_layers);
2178 2194
2179 RunBaseTest(&test, FakeNetworkPipe::Config()); 2195 RunBaseTest(&test, FakeNetworkPipe::Config());
2180 } 2196 }
2181 2197
2182 TEST_F(VideoSendStreamTest, Vp9FlexModeRefCount) { 2198 TEST_F(VideoSendStreamTest, Vp9FlexModeRefCount) {
2183 class FlexibleMode : public Vp9HeaderObserver { 2199 class FlexibleMode : public Vp9HeaderObserver {
2184 void ModifyConfigsHook( 2200 void ModifyVideoConfigsHook(
2185 VideoSendStream::Config* send_config, 2201 VideoSendStream::Config* send_config,
2186 std::vector<VideoReceiveStream::Config>* receive_configs, 2202 std::vector<VideoReceiveStream::Config>* receive_configs,
2187 VideoEncoderConfig* encoder_config) override { 2203 VideoEncoderConfig* encoder_config) override {
2188 encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen; 2204 encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen;
2189 vp9_settings_.flexibleMode = true; 2205 vp9_settings_.flexibleMode = true;
2190 vp9_settings_.numberOfTemporalLayers = 1; 2206 vp9_settings_.numberOfTemporalLayers = 1;
2191 vp9_settings_.numberOfSpatialLayers = 2; 2207 vp9_settings_.numberOfSpatialLayers = 2;
2192 } 2208 }
2193 2209
2194 void InspectHeader(const RTPVideoHeaderVP9& vp9_header) override { 2210 void InspectHeader(const RTPVideoHeaderVP9& vp9_header) override {
2195 EXPECT_TRUE(vp9_header.flexible_mode); 2211 EXPECT_TRUE(vp9_header.flexible_mode);
2196 EXPECT_EQ(kNoTl0PicIdx, vp9_header.tl0_pic_idx); 2212 EXPECT_EQ(kNoTl0PicIdx, vp9_header.tl0_pic_idx);
2197 if (vp9_header.inter_pic_predicted) { 2213 if (vp9_header.inter_pic_predicted) {
2198 EXPECT_GT(vp9_header.num_ref_pics, 0u); 2214 EXPECT_GT(vp9_header.num_ref_pics, 0u);
2199 observation_complete_.Set(); 2215 observation_complete_.Set();
2200 } 2216 }
2201 } 2217 }
2202 } test; 2218 } test;
2203 2219
2204 RunBaseTest(&test, FakeNetworkPipe::Config()); 2220 RunBaseTest(&test, FakeNetworkPipe::Config());
2205 } 2221 }
2206 2222
2207 } // namespace webrtc 2223 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/video_quality_test.cc ('k') | webrtc/webrtc_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698