OLD | NEW |
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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 | 47 |
48 namespace webrtc { | 48 namespace webrtc { |
49 | 49 |
50 static const int kSilenceTimeoutMs = 2000; | 50 static const int kSilenceTimeoutMs = 2000; |
51 | 51 |
52 class EndToEndTest : public test::CallTest { | 52 class EndToEndTest : public test::CallTest { |
53 public: | 53 public: |
54 EndToEndTest() {} | 54 EndToEndTest() {} |
55 | 55 |
56 virtual ~EndToEndTest() { | 56 virtual ~EndToEndTest() { |
57 EXPECT_EQ(nullptr, send_stream_); | 57 EXPECT_EQ(nullptr, video_send_stream_); |
58 EXPECT_TRUE(receive_streams_.empty()); | 58 EXPECT_TRUE(video_receive_streams_.empty()); |
59 } | 59 } |
60 | 60 |
61 protected: | 61 protected: |
62 class UnusedTransport : public Transport { | 62 class UnusedTransport : public Transport { |
63 private: | 63 private: |
64 bool SendRtp(const uint8_t* packet, | 64 bool SendRtp(const uint8_t* packet, |
65 size_t length, | 65 size_t length, |
66 const PacketOptions& options) override { | 66 const PacketOptions& options) override { |
67 ADD_FAILURE() << "Unexpected RTP sent."; | 67 ADD_FAILURE() << "Unexpected RTP sent."; |
68 return false; | 68 return false; |
(...skipping 16 matching lines...) Expand all Loading... |
85 | 85 |
86 TEST_F(EndToEndTest, ReceiverCanBeStartedTwice) { | 86 TEST_F(EndToEndTest, ReceiverCanBeStartedTwice) { |
87 CreateCalls(Call::Config(), Call::Config()); | 87 CreateCalls(Call::Config(), Call::Config()); |
88 | 88 |
89 test::NullTransport transport; | 89 test::NullTransport transport; |
90 CreateSendConfig(1, &transport); | 90 CreateSendConfig(1, &transport); |
91 CreateMatchingReceiveConfigs(&transport); | 91 CreateMatchingReceiveConfigs(&transport); |
92 | 92 |
93 CreateStreams(); | 93 CreateStreams(); |
94 | 94 |
95 receive_streams_[0]->Start(); | 95 video_receive_streams_[0]->Start(); |
96 receive_streams_[0]->Start(); | 96 video_receive_streams_[0]->Start(); |
97 | 97 |
98 DestroyStreams(); | 98 DestroyStreams(); |
99 } | 99 } |
100 | 100 |
101 TEST_F(EndToEndTest, ReceiverCanBeStoppedTwice) { | 101 TEST_F(EndToEndTest, ReceiverCanBeStoppedTwice) { |
102 CreateCalls(Call::Config(), Call::Config()); | 102 CreateCalls(Call::Config(), Call::Config()); |
103 | 103 |
104 test::NullTransport transport; | 104 test::NullTransport transport; |
105 CreateSendConfig(1, &transport); | 105 CreateSendConfig(1, &transport); |
106 CreateMatchingReceiveConfigs(&transport); | 106 CreateMatchingReceiveConfigs(&transport); |
107 | 107 |
108 CreateStreams(); | 108 CreateStreams(); |
109 | 109 |
110 receive_streams_[0]->Stop(); | 110 video_receive_streams_[0]->Stop(); |
111 receive_streams_[0]->Stop(); | 111 video_receive_streams_[0]->Stop(); |
112 | 112 |
113 DestroyStreams(); | 113 DestroyStreams(); |
114 } | 114 } |
115 | 115 |
116 TEST_F(EndToEndTest, RendersSingleDelayedFrame) { | 116 TEST_F(EndToEndTest, RendersSingleDelayedFrame) { |
117 static const int kWidth = 320; | 117 static const int kWidth = 320; |
118 static const int kHeight = 240; | 118 static const int kHeight = 240; |
119 // This constant is chosen to be higher than the timeout in the video_render | 119 // This constant is chosen to be higher than the timeout in the video_render |
120 // module. This makes sure that frames aren't dropped if there are no other | 120 // module. This makes sure that frames aren't dropped if there are no other |
121 // frames in the queue. | 121 // frames in the queue. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 | 156 |
157 test::DirectTransport sender_transport(sender_call_.get()); | 157 test::DirectTransport sender_transport(sender_call_.get()); |
158 test::DirectTransport receiver_transport(receiver_call_.get()); | 158 test::DirectTransport receiver_transport(receiver_call_.get()); |
159 sender_transport.SetReceiver(receiver_call_->Receiver()); | 159 sender_transport.SetReceiver(receiver_call_->Receiver()); |
160 receiver_transport.SetReceiver(sender_call_->Receiver()); | 160 receiver_transport.SetReceiver(sender_call_->Receiver()); |
161 | 161 |
162 CreateSendConfig(1, &sender_transport); | 162 CreateSendConfig(1, &sender_transport); |
163 CreateMatchingReceiveConfigs(&receiver_transport); | 163 CreateMatchingReceiveConfigs(&receiver_transport); |
164 | 164 |
165 TestFrameCallback pre_render_callback; | 165 TestFrameCallback pre_render_callback; |
166 receive_configs_[0].pre_render_callback = &pre_render_callback; | 166 video_receive_configs_[0].pre_render_callback = &pre_render_callback; |
167 receive_configs_[0].renderer = &renderer; | 167 video_receive_configs_[0].renderer = &renderer; |
168 | 168 |
169 CreateStreams(); | 169 CreateStreams(); |
170 Start(); | 170 Start(); |
171 | 171 |
172 // Create frames that are smaller than the send width/height, this is done to | 172 // Create frames that are smaller than the send width/height, this is done to |
173 // check that the callbacks are done after processing video. | 173 // check that the callbacks are done after processing video. |
174 rtc::scoped_ptr<test::FrameGenerator> frame_generator( | 174 rtc::scoped_ptr<test::FrameGenerator> frame_generator( |
175 test::FrameGenerator::CreateChromaGenerator(kWidth, kHeight)); | 175 test::FrameGenerator::CreateChromaGenerator(kWidth, kHeight)); |
176 send_stream_->Input()->IncomingCapturedFrame(*frame_generator->NextFrame()); | 176 video_send_stream_->Input()->IncomingCapturedFrame( |
| 177 *frame_generator->NextFrame()); |
177 EXPECT_TRUE(pre_render_callback.Wait()) | 178 EXPECT_TRUE(pre_render_callback.Wait()) |
178 << "Timed out while waiting for pre-render callback."; | 179 << "Timed out while waiting for pre-render callback."; |
179 EXPECT_TRUE(renderer.Wait()) | 180 EXPECT_TRUE(renderer.Wait()) |
180 << "Timed out while waiting for the frame to render."; | 181 << "Timed out while waiting for the frame to render."; |
181 | 182 |
182 Stop(); | 183 Stop(); |
183 | 184 |
184 sender_transport.StopSending(); | 185 sender_transport.StopSending(); |
185 receiver_transport.StopSending(); | 186 receiver_transport.StopSending(); |
186 | 187 |
(...skipping 18 matching lines...) Expand all Loading... |
205 | 206 |
206 CreateCalls(Call::Config(), Call::Config()); | 207 CreateCalls(Call::Config(), Call::Config()); |
207 | 208 |
208 test::DirectTransport sender_transport(sender_call_.get()); | 209 test::DirectTransport sender_transport(sender_call_.get()); |
209 test::DirectTransport receiver_transport(receiver_call_.get()); | 210 test::DirectTransport receiver_transport(receiver_call_.get()); |
210 sender_transport.SetReceiver(receiver_call_->Receiver()); | 211 sender_transport.SetReceiver(receiver_call_->Receiver()); |
211 receiver_transport.SetReceiver(sender_call_->Receiver()); | 212 receiver_transport.SetReceiver(sender_call_->Receiver()); |
212 | 213 |
213 CreateSendConfig(1, &sender_transport); | 214 CreateSendConfig(1, &sender_transport); |
214 CreateMatchingReceiveConfigs(&receiver_transport); | 215 CreateMatchingReceiveConfigs(&receiver_transport); |
215 receive_configs_[0].renderer = &renderer; | 216 video_receive_configs_[0].renderer = &renderer; |
216 | 217 |
217 CreateStreams(); | 218 CreateStreams(); |
218 Start(); | 219 Start(); |
219 | 220 |
220 rtc::scoped_ptr<test::FrameGenerator> frame_generator( | 221 rtc::scoped_ptr<test::FrameGenerator> frame_generator( |
221 test::FrameGenerator::CreateChromaGenerator( | 222 test::FrameGenerator::CreateChromaGenerator( |
222 encoder_config_.streams[0].width, encoder_config_.streams[0].height)); | 223 video_encoder_config_.streams[0].width, |
223 send_stream_->Input()->IncomingCapturedFrame(*frame_generator->NextFrame()); | 224 video_encoder_config_.streams[0].height)); |
| 225 video_send_stream_->Input()->IncomingCapturedFrame( |
| 226 *frame_generator->NextFrame()); |
224 | 227 |
225 EXPECT_TRUE(renderer.Wait()) | 228 EXPECT_TRUE(renderer.Wait()) |
226 << "Timed out while waiting for the frame to render."; | 229 << "Timed out while waiting for the frame to render."; |
227 | 230 |
228 Stop(); | 231 Stop(); |
229 | 232 |
230 sender_transport.StopSending(); | 233 sender_transport.StopSending(); |
231 receiver_transport.StopSending(); | 234 receiver_transport.StopSending(); |
232 | 235 |
233 DestroyStreams(); | 236 DestroyStreams(); |
234 } | 237 } |
235 | 238 |
236 TEST_F(EndToEndTest, SendsAndReceivesVP9) { | 239 TEST_F(EndToEndTest, SendsAndReceivesVP9) { |
237 class VP9Observer : public test::EndToEndTest, public VideoRenderer { | 240 class VP9Observer : public test::EndToEndTest, public VideoRenderer { |
238 public: | 241 public: |
239 VP9Observer() | 242 VP9Observer() |
240 : EndToEndTest(2 * kDefaultTimeoutMs), | 243 : EndToEndTest(2 * kDefaultTimeoutMs), |
241 encoder_(VideoEncoder::Create(VideoEncoder::kVp9)), | 244 encoder_(VideoEncoder::Create(VideoEncoder::kVp9)), |
242 decoder_(VP9Decoder::Create()), | 245 decoder_(VP9Decoder::Create()), |
243 frame_counter_(0) {} | 246 frame_counter_(0) {} |
244 | 247 |
245 void PerformTest() override { | 248 void PerformTest() override { |
246 EXPECT_TRUE(Wait()) | 249 EXPECT_TRUE(Wait()) |
247 << "Timed out while waiting for enough frames to be decoded."; | 250 << "Timed out while waiting for enough frames to be decoded."; |
248 } | 251 } |
249 | 252 |
250 void ModifyConfigs(VideoSendStream::Config* send_config, | 253 void ModifyVideoConfigs( |
251 std::vector<VideoReceiveStream::Config>* receive_configs, | 254 VideoSendStream::Config* send_config, |
252 VideoEncoderConfig* encoder_config) override { | 255 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 256 VideoEncoderConfig* encoder_config) override { |
253 send_config->encoder_settings.encoder = encoder_.get(); | 257 send_config->encoder_settings.encoder = encoder_.get(); |
254 send_config->encoder_settings.payload_name = "VP9"; | 258 send_config->encoder_settings.payload_name = "VP9"; |
255 send_config->encoder_settings.payload_type = 124; | 259 send_config->encoder_settings.payload_type = 124; |
256 encoder_config->streams[0].min_bitrate_bps = 50000; | 260 encoder_config->streams[0].min_bitrate_bps = 50000; |
257 encoder_config->streams[0].target_bitrate_bps = | 261 encoder_config->streams[0].target_bitrate_bps = |
258 encoder_config->streams[0].max_bitrate_bps = 2000000; | 262 encoder_config->streams[0].max_bitrate_bps = 2000000; |
259 | 263 |
260 (*receive_configs)[0].renderer = this; | 264 (*receive_configs)[0].renderer = this; |
261 (*receive_configs)[0].decoders.resize(1); | 265 (*receive_configs)[0].decoders.resize(1); |
262 (*receive_configs)[0].decoders[0].payload_type = | 266 (*receive_configs)[0].decoders[0].payload_type = |
(...skipping 27 matching lines...) Expand all Loading... |
290 H264Observer() | 294 H264Observer() |
291 : EndToEndTest(2 * kDefaultTimeoutMs), | 295 : EndToEndTest(2 * kDefaultTimeoutMs), |
292 fake_encoder_(Clock::GetRealTimeClock()), | 296 fake_encoder_(Clock::GetRealTimeClock()), |
293 frame_counter_(0) {} | 297 frame_counter_(0) {} |
294 | 298 |
295 void PerformTest() override { | 299 void PerformTest() override { |
296 EXPECT_TRUE(Wait()) | 300 EXPECT_TRUE(Wait()) |
297 << "Timed out while waiting for enough frames to be decoded."; | 301 << "Timed out while waiting for enough frames to be decoded."; |
298 } | 302 } |
299 | 303 |
300 void ModifyConfigs(VideoSendStream::Config* send_config, | 304 void ModifyVideoConfigs( |
301 std::vector<VideoReceiveStream::Config>* receive_configs, | 305 VideoSendStream::Config* send_config, |
302 VideoEncoderConfig* encoder_config) override { | 306 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 307 VideoEncoderConfig* encoder_config) override { |
303 send_config->rtp.nack.rtp_history_ms = | 308 send_config->rtp.nack.rtp_history_ms = |
304 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 309 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
305 send_config->encoder_settings.encoder = &fake_encoder_; | 310 send_config->encoder_settings.encoder = &fake_encoder_; |
306 send_config->encoder_settings.payload_name = "H264"; | 311 send_config->encoder_settings.payload_name = "H264"; |
307 send_config->encoder_settings.payload_type = kFakeSendPayloadType; | 312 send_config->encoder_settings.payload_type = kFakeSendPayloadType; |
308 encoder_config->streams[0].min_bitrate_bps = 50000; | 313 encoder_config->streams[0].min_bitrate_bps = 50000; |
309 encoder_config->streams[0].target_bitrate_bps = | 314 encoder_config->streams[0].target_bitrate_bps = |
310 encoder_config->streams[0].max_bitrate_bps = 2000000; | 315 encoder_config->streams[0].max_bitrate_bps = 2000000; |
311 | 316 |
312 (*receive_configs)[0].renderer = this; | 317 (*receive_configs)[0].renderer = this; |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 while (packet_type != RTCPUtility::RTCPPacketTypes::kInvalid) { | 427 while (packet_type != RTCPUtility::RTCPPacketTypes::kInvalid) { |
423 if (packet_type == RTCPUtility::RTCPPacketTypes::kRtpfbNack) { | 428 if (packet_type == RTCPUtility::RTCPPacketTypes::kRtpfbNack) { |
424 --nacks_left_; | 429 --nacks_left_; |
425 break; | 430 break; |
426 } | 431 } |
427 packet_type = parser.Iterate(); | 432 packet_type = parser.Iterate(); |
428 } | 433 } |
429 return SEND_PACKET; | 434 return SEND_PACKET; |
430 } | 435 } |
431 | 436 |
432 void ModifyConfigs(VideoSendStream::Config* send_config, | 437 void ModifyVideoConfigs( |
433 std::vector<VideoReceiveStream::Config>* receive_configs, | 438 VideoSendStream::Config* send_config, |
434 VideoEncoderConfig* encoder_config) override { | 439 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 440 VideoEncoderConfig* encoder_config) override { |
435 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 441 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
436 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 442 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
437 } | 443 } |
438 | 444 |
439 void PerformTest() override { | 445 void PerformTest() override { |
440 EXPECT_TRUE(Wait()) | 446 EXPECT_TRUE(Wait()) |
441 << "Timed out waiting for packets to be NACKed, retransmitted and " | 447 << "Timed out waiting for packets to be NACKed, retransmitted and " |
442 "rendered."; | 448 "rendered."; |
443 } | 449 } |
444 | 450 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 } | 524 } |
519 | 525 |
520 bool IsTextureSupported() const override { return false; } | 526 bool IsTextureSupported() const override { return false; } |
521 | 527 |
522 enum { | 528 enum { |
523 kFirstPacket, | 529 kFirstPacket, |
524 kDropEveryOtherPacketUntilFec, | 530 kDropEveryOtherPacketUntilFec, |
525 kDropNextMediaPacket, | 531 kDropNextMediaPacket, |
526 } state_; | 532 } state_; |
527 | 533 |
528 void ModifyConfigs(VideoSendStream::Config* send_config, | 534 void ModifyVideoConfigs( |
529 std::vector<VideoReceiveStream::Config>* receive_configs, | 535 VideoSendStream::Config* send_config, |
530 VideoEncoderConfig* encoder_config) override { | 536 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 537 VideoEncoderConfig* encoder_config) override { |
531 // TODO(pbos): Run this test with combined NACK/FEC enabled as well. | 538 // TODO(pbos): Run this test with combined NACK/FEC enabled as well. |
532 // int rtp_history_ms = 1000; | 539 // int rtp_history_ms = 1000; |
533 // (*receive_configs)[0].rtp.nack.rtp_history_ms = rtp_history_ms; | 540 // (*receive_configs)[0].rtp.nack.rtp_history_ms = rtp_history_ms; |
534 // send_config->rtp.nack.rtp_history_ms = rtp_history_ms; | 541 // send_config->rtp.nack.rtp_history_ms = rtp_history_ms; |
535 send_config->rtp.fec.red_payload_type = kRedPayloadType; | 542 send_config->rtp.fec.red_payload_type = kRedPayloadType; |
536 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; | 543 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; |
537 | 544 |
538 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; | 545 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; |
539 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; | 546 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; |
540 (*receive_configs)[0].renderer = this; | 547 (*receive_configs)[0].renderer = this; |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 | 641 |
635 // TODO(holmer): Investigate why we don't send FEC packets when the bitrate | 642 // TODO(holmer): Investigate why we don't send FEC packets when the bitrate |
636 // is 10 kbps. | 643 // is 10 kbps. |
637 Call::Config GetSenderCallConfig() override { | 644 Call::Config GetSenderCallConfig() override { |
638 Call::Config config; | 645 Call::Config config; |
639 const int kMinBitrateBps = 30000; | 646 const int kMinBitrateBps = 30000; |
640 config.bitrate_config.min_bitrate_bps = kMinBitrateBps; | 647 config.bitrate_config.min_bitrate_bps = kMinBitrateBps; |
641 return config; | 648 return config; |
642 } | 649 } |
643 | 650 |
644 void ModifyConfigs(VideoSendStream::Config* send_config, | 651 void ModifyVideoConfigs( |
645 std::vector<VideoReceiveStream::Config>* receive_configs, | 652 VideoSendStream::Config* send_config, |
646 VideoEncoderConfig* encoder_config) override { | 653 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 654 VideoEncoderConfig* encoder_config) override { |
647 // Configure hybrid NACK/FEC. | 655 // Configure hybrid NACK/FEC. |
648 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 656 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
649 send_config->rtp.fec.red_payload_type = kRedPayloadType; | 657 send_config->rtp.fec.red_payload_type = kRedPayloadType; |
650 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; | 658 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; |
651 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 659 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
652 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; | 660 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; |
653 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; | 661 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; |
654 } | 662 } |
655 | 663 |
656 void PerformTest() override { | 664 void PerformTest() override { |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
733 } | 741 } |
734 | 742 |
735 void FrameCallback(VideoFrame* frame) override { | 743 void FrameCallback(VideoFrame* frame) override { |
736 rtc::CritScope lock(&crit_); | 744 rtc::CritScope lock(&crit_); |
737 if (frame->timestamp() == retransmitted_timestamp_) { | 745 if (frame->timestamp() == retransmitted_timestamp_) { |
738 EXPECT_TRUE(frame_retransmitted_); | 746 EXPECT_TRUE(frame_retransmitted_); |
739 observation_complete_.Set(); | 747 observation_complete_.Set(); |
740 } | 748 } |
741 } | 749 } |
742 | 750 |
743 void ModifyConfigs(VideoSendStream::Config* send_config, | 751 void ModifyVideoConfigs( |
744 std::vector<VideoReceiveStream::Config>* receive_configs, | 752 VideoSendStream::Config* send_config, |
745 VideoEncoderConfig* encoder_config) override { | 753 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 754 VideoEncoderConfig* encoder_config) override { |
746 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 755 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
747 (*receive_configs)[0].pre_render_callback = this; | 756 (*receive_configs)[0].pre_render_callback = this; |
748 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 757 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
749 | 758 |
750 if (payload_type_ == kRedPayloadType) { | 759 if (payload_type_ == kRedPayloadType) { |
751 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; | 760 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; |
752 send_config->rtp.fec.red_payload_type = kRedPayloadType; | 761 send_config->rtp.fec.red_payload_type = kRedPayloadType; |
753 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; | 762 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; |
754 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; | 763 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; |
755 } | 764 } |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 CreateCalls(Call::Config(), Call::Config()); | 873 CreateCalls(Call::Config(), Call::Config()); |
865 | 874 |
866 test::DirectTransport sender_transport(sender_call_.get()); | 875 test::DirectTransport sender_transport(sender_call_.get()); |
867 test::DirectTransport receiver_transport(receiver_call_.get()); | 876 test::DirectTransport receiver_transport(receiver_call_.get()); |
868 sender_transport.SetReceiver(receiver_call_->Receiver()); | 877 sender_transport.SetReceiver(receiver_call_->Receiver()); |
869 receiver_transport.SetReceiver(sender_call_->Receiver()); | 878 receiver_transport.SetReceiver(sender_call_->Receiver()); |
870 | 879 |
871 CreateSendConfig(1, &sender_transport); | 880 CreateSendConfig(1, &sender_transport); |
872 rtc::scoped_ptr<VideoEncoder> encoder( | 881 rtc::scoped_ptr<VideoEncoder> encoder( |
873 VideoEncoder::Create(VideoEncoder::kVp8)); | 882 VideoEncoder::Create(VideoEncoder::kVp8)); |
874 send_config_.encoder_settings.encoder = encoder.get(); | 883 video_send_config_.encoder_settings.encoder = encoder.get(); |
875 send_config_.encoder_settings.payload_name = "VP8"; | 884 video_send_config_.encoder_settings.payload_name = "VP8"; |
876 ASSERT_EQ(1u, encoder_config_.streams.size()) << "Test setup error."; | 885 ASSERT_EQ(1u, video_encoder_config_.streams.size()) << "Test setup error."; |
877 encoder_config_.streams[0].width = kWidth; | 886 video_encoder_config_.streams[0].width = kWidth; |
878 encoder_config_.streams[0].height = kHeight; | 887 video_encoder_config_.streams[0].height = kHeight; |
879 send_config_.pre_encode_callback = &pre_encode_callback; | 888 video_send_config_.pre_encode_callback = &pre_encode_callback; |
880 | 889 |
881 CreateMatchingReceiveConfigs(&receiver_transport); | 890 CreateMatchingReceiveConfigs(&receiver_transport); |
882 receive_configs_[0].pre_render_callback = &pre_render_callback; | 891 video_receive_configs_[0].pre_render_callback = &pre_render_callback; |
883 receive_configs_[0].renderer = &renderer; | 892 video_receive_configs_[0].renderer = &renderer; |
884 | 893 |
885 CreateStreams(); | 894 CreateStreams(); |
886 Start(); | 895 Start(); |
887 | 896 |
888 // Create frames that are smaller than the send width/height, this is done to | 897 // Create frames that are smaller than the send width/height, this is done to |
889 // check that the callbacks are done after processing video. | 898 // check that the callbacks are done after processing video. |
890 rtc::scoped_ptr<test::FrameGenerator> frame_generator( | 899 rtc::scoped_ptr<test::FrameGenerator> frame_generator( |
891 test::FrameGenerator::CreateChromaGenerator(kWidth / 2, kHeight / 2)); | 900 test::FrameGenerator::CreateChromaGenerator(kWidth / 2, kHeight / 2)); |
892 send_stream_->Input()->IncomingCapturedFrame(*frame_generator->NextFrame()); | 901 video_send_stream_->Input()->IncomingCapturedFrame( |
| 902 *frame_generator->NextFrame()); |
893 | 903 |
894 EXPECT_TRUE(pre_encode_callback.Wait()) | 904 EXPECT_TRUE(pre_encode_callback.Wait()) |
895 << "Timed out while waiting for pre-encode callback."; | 905 << "Timed out while waiting for pre-encode callback."; |
896 EXPECT_TRUE(pre_render_callback.Wait()) | 906 EXPECT_TRUE(pre_render_callback.Wait()) |
897 << "Timed out while waiting for pre-render callback."; | 907 << "Timed out while waiting for pre-render callback."; |
898 EXPECT_TRUE(renderer.Wait()) | 908 EXPECT_TRUE(renderer.Wait()) |
899 << "Timed out while waiting for the frame to render."; | 909 << "Timed out while waiting for the frame to render."; |
900 | 910 |
901 Stop(); | 911 Stop(); |
902 | 912 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
963 if (received_pli_ && | 973 if (received_pli_ && |
964 video_frame.timestamp() > highest_dropped_timestamp_) { | 974 video_frame.timestamp() > highest_dropped_timestamp_) { |
965 observation_complete_.Set(); | 975 observation_complete_.Set(); |
966 } | 976 } |
967 if (!received_pli_) | 977 if (!received_pli_) |
968 frames_to_drop_ = kPacketsToDrop; | 978 frames_to_drop_ = kPacketsToDrop; |
969 } | 979 } |
970 | 980 |
971 bool IsTextureSupported() const override { return false; } | 981 bool IsTextureSupported() const override { return false; } |
972 | 982 |
973 void ModifyConfigs(VideoSendStream::Config* send_config, | 983 void ModifyVideoConfigs( |
974 std::vector<VideoReceiveStream::Config>* receive_configs, | 984 VideoSendStream::Config* send_config, |
975 VideoEncoderConfig* encoder_config) override { | 985 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 986 VideoEncoderConfig* encoder_config) override { |
976 send_config->rtp.nack.rtp_history_ms = rtp_history_ms_; | 987 send_config->rtp.nack.rtp_history_ms = rtp_history_ms_; |
977 (*receive_configs)[0].rtp.nack.rtp_history_ms = rtp_history_ms_; | 988 (*receive_configs)[0].rtp.nack.rtp_history_ms = rtp_history_ms_; |
978 (*receive_configs)[0].renderer = this; | 989 (*receive_configs)[0].renderer = this; |
979 } | 990 } |
980 | 991 |
981 void PerformTest() override { | 992 void PerformTest() override { |
982 EXPECT_TRUE(Wait()) << "Timed out waiting for PLI to be " | 993 EXPECT_TRUE(Wait()) << "Timed out waiting for PLI to be " |
983 "received and a frame to be " | 994 "received and a frame to be " |
984 "rendered afterwards."; | 995 "rendered afterwards."; |
985 } | 996 } |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1040 send_transport.SetReceiver(&input_observer); | 1051 send_transport.SetReceiver(&input_observer); |
1041 receive_transport.SetReceiver(sender_call_->Receiver()); | 1052 receive_transport.SetReceiver(sender_call_->Receiver()); |
1042 | 1053 |
1043 CreateSendConfig(1, &send_transport); | 1054 CreateSendConfig(1, &send_transport); |
1044 CreateMatchingReceiveConfigs(&receive_transport); | 1055 CreateMatchingReceiveConfigs(&receive_transport); |
1045 | 1056 |
1046 CreateStreams(); | 1057 CreateStreams(); |
1047 CreateFrameGeneratorCapturer(); | 1058 CreateFrameGeneratorCapturer(); |
1048 Start(); | 1059 Start(); |
1049 | 1060 |
1050 receiver_call_->DestroyVideoReceiveStream(receive_streams_[0]); | 1061 receiver_call_->DestroyVideoReceiveStream(video_receive_streams_[0]); |
1051 receive_streams_.clear(); | 1062 video_receive_streams_.clear(); |
1052 | 1063 |
1053 // Wait() waits for a received packet. | 1064 // Wait() waits for a received packet. |
1054 EXPECT_TRUE(input_observer.Wait()); | 1065 EXPECT_TRUE(input_observer.Wait()); |
1055 | 1066 |
1056 Stop(); | 1067 Stop(); |
1057 | 1068 |
1058 DestroyStreams(); | 1069 DestroyStreams(); |
1059 | 1070 |
1060 send_transport.StopSending(); | 1071 send_transport.StopSending(); |
1061 receive_transport.StopSending(); | 1072 receive_transport.StopSending(); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1112 observation_complete_.Set(); | 1123 observation_complete_.Set(); |
1113 break; | 1124 break; |
1114 case RtcpMode::kOff: | 1125 case RtcpMode::kOff: |
1115 RTC_NOTREACHED(); | 1126 RTC_NOTREACHED(); |
1116 break; | 1127 break; |
1117 } | 1128 } |
1118 | 1129 |
1119 return SEND_PACKET; | 1130 return SEND_PACKET; |
1120 } | 1131 } |
1121 | 1132 |
1122 void ModifyConfigs(VideoSendStream::Config* send_config, | 1133 void ModifyVideoConfigs( |
1123 std::vector<VideoReceiveStream::Config>* receive_configs, | 1134 VideoSendStream::Config* send_config, |
1124 VideoEncoderConfig* encoder_config) override { | 1135 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 1136 VideoEncoderConfig* encoder_config) override { |
1125 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1137 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
1126 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1138 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
1127 (*receive_configs)[0].rtp.rtcp_mode = rtcp_mode_; | 1139 (*receive_configs)[0].rtp.rtcp_mode = rtcp_mode_; |
1128 } | 1140 } |
1129 | 1141 |
1130 void PerformTest() override { | 1142 void PerformTest() override { |
1131 EXPECT_TRUE(Wait()) | 1143 EXPECT_TRUE(Wait()) |
1132 << (rtcp_mode_ == RtcpMode::kCompound | 1144 << (rtcp_mode_ == RtcpMode::kCompound |
1133 ? "Timed out before observing enough compound packets." | 1145 ? "Timed out before observing enough compound packets." |
1134 : "Timed out before receiving a non-compound RTCP packet."); | 1146 : "Timed out before receiving a non-compound RTCP packet."); |
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1643 | 1655 |
1644 CreateCalls(Call::Config(), Call::Config()); | 1656 CreateCalls(Call::Config(), Call::Config()); |
1645 | 1657 |
1646 test::DirectTransport sender_transport(sender_call_.get()); | 1658 test::DirectTransport sender_transport(sender_call_.get()); |
1647 test::DirectTransport receiver_transport(receiver_call_.get()); | 1659 test::DirectTransport receiver_transport(receiver_call_.get()); |
1648 sender_transport.SetReceiver(receiver_call_->Receiver()); | 1660 sender_transport.SetReceiver(receiver_call_->Receiver()); |
1649 receiver_transport.SetReceiver(sender_call_->Receiver()); | 1661 receiver_transport.SetReceiver(sender_call_->Receiver()); |
1650 | 1662 |
1651 CreateSendConfig(1, &sender_transport); | 1663 CreateSendConfig(1, &sender_transport); |
1652 CreateMatchingReceiveConfigs(&receiver_transport); | 1664 CreateMatchingReceiveConfigs(&receiver_transport); |
1653 send_config_.post_encode_callback = &post_encode_observer; | 1665 video_send_config_.post_encode_callback = &post_encode_observer; |
1654 receive_configs_[0].pre_decode_callback = &pre_decode_observer; | 1666 video_receive_configs_[0].pre_decode_callback = &pre_decode_observer; |
1655 | 1667 |
1656 CreateStreams(); | 1668 CreateStreams(); |
1657 Start(); | 1669 Start(); |
1658 | 1670 |
1659 rtc::scoped_ptr<test::FrameGenerator> frame_generator( | 1671 rtc::scoped_ptr<test::FrameGenerator> frame_generator( |
1660 test::FrameGenerator::CreateChromaGenerator( | 1672 test::FrameGenerator::CreateChromaGenerator( |
1661 encoder_config_.streams[0].width, encoder_config_.streams[0].height)); | 1673 video_encoder_config_.streams[0].width, |
1662 send_stream_->Input()->IncomingCapturedFrame(*frame_generator->NextFrame()); | 1674 video_encoder_config_.streams[0].height)); |
| 1675 video_send_stream_->Input()->IncomingCapturedFrame( |
| 1676 *frame_generator->NextFrame()); |
1663 | 1677 |
1664 EXPECT_TRUE(post_encode_observer.Wait()) | 1678 EXPECT_TRUE(post_encode_observer.Wait()) |
1665 << "Timed out while waiting for send-side encoded-frame callback."; | 1679 << "Timed out while waiting for send-side encoded-frame callback."; |
1666 | 1680 |
1667 EXPECT_TRUE(pre_decode_observer.Wait()) | 1681 EXPECT_TRUE(pre_decode_observer.Wait()) |
1668 << "Timed out while waiting for pre-decode encoded-frame callback."; | 1682 << "Timed out while waiting for pre-decode encoded-frame callback."; |
1669 | 1683 |
1670 post_encode_observer.ExpectEqualFrames(pre_decode_observer); | 1684 post_encode_observer.ExpectEqualFrames(pre_decode_observer); |
1671 | 1685 |
1672 Stop(); | 1686 Stop(); |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1805 stats.substreams.begin(); it != stats.substreams.end(); ++it) { | 1819 stats.substreams.begin(); it != stats.substreams.end(); ++it) { |
1806 const VideoSendStream::StreamStats& stream_stats = it->second; | 1820 const VideoSendStream::StreamStats& stream_stats = it->second; |
1807 send_stream_nack_packets += | 1821 send_stream_nack_packets += |
1808 stream_stats.rtcp_packet_type_counts.nack_packets; | 1822 stream_stats.rtcp_packet_type_counts.nack_packets; |
1809 } | 1823 } |
1810 for (size_t i = 0; i < receive_streams_.size(); ++i) { | 1824 for (size_t i = 0; i < receive_streams_.size(); ++i) { |
1811 VideoReceiveStream::Stats stats = receive_streams_[i]->GetStats(); | 1825 VideoReceiveStream::Stats stats = receive_streams_[i]->GetStats(); |
1812 receive_stream_nack_packets += | 1826 receive_stream_nack_packets += |
1813 stats.rtcp_packet_type_counts.nack_packets; | 1827 stats.rtcp_packet_type_counts.nack_packets; |
1814 } | 1828 } |
1815 if (send_stream_nack_packets >= 1 && receive_stream_nack_packets >= 1) { | 1829 if (send_stream_nack_packets >= 1 && |
| 1830 receive_stream_nack_packets >= 1) { |
1816 // NACK packet sent on receive stream and received on sent stream. | 1831 // NACK packet sent on receive stream and received on sent stream. |
1817 if (MinMetricRunTimePassed()) | 1832 if (MinMetricRunTimePassed()) |
1818 observation_complete_.Set(); | 1833 observation_complete_.Set(); |
1819 } | 1834 } |
1820 } | 1835 } |
1821 | 1836 |
1822 bool MinMetricRunTimePassed() { | 1837 bool MinMetricRunTimePassed() { |
1823 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); | 1838 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); |
1824 if (start_runtime_ms_ == -1) { | 1839 if (start_runtime_ms_ == -1) { |
1825 start_runtime_ms_ = now; | 1840 start_runtime_ms_ = now; |
1826 return false; | 1841 return false; |
1827 } | 1842 } |
1828 int64_t elapsed_sec = (now - start_runtime_ms_) / 1000; | 1843 int64_t elapsed_sec = (now - start_runtime_ms_) / 1000; |
1829 return elapsed_sec > metrics::kMinRunTimeInSeconds; | 1844 return elapsed_sec > metrics::kMinRunTimeInSeconds; |
1830 } | 1845 } |
1831 | 1846 |
1832 void ModifyConfigs(VideoSendStream::Config* send_config, | 1847 void ModifyVideoConfigs( |
1833 std::vector<VideoReceiveStream::Config>* receive_configs, | 1848 VideoSendStream::Config* send_config, |
1834 VideoEncoderConfig* encoder_config) override { | 1849 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 1850 VideoEncoderConfig* encoder_config) override { |
1835 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1851 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
1836 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1852 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
1837 } | 1853 } |
1838 | 1854 |
1839 void OnStreamsCreated( | 1855 void OnVideoStreamsCreated( |
1840 VideoSendStream* send_stream, | 1856 VideoSendStream* send_stream, |
1841 const std::vector<VideoReceiveStream*>& receive_streams) override { | 1857 const std::vector<VideoReceiveStream*>& receive_streams) override { |
1842 send_stream_ = send_stream; | 1858 send_stream_ = send_stream; |
1843 receive_streams_ = receive_streams; | 1859 receive_streams_ = receive_streams; |
1844 } | 1860 } |
1845 | 1861 |
1846 void PerformTest() override { | 1862 void PerformTest() override { |
1847 EXPECT_TRUE(Wait()) << "Timed out waiting for packet to be NACKed."; | 1863 EXPECT_TRUE(Wait()) << "Timed out waiting for packet to be NACKed."; |
1848 } | 1864 } |
1849 | 1865 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1900 bool MinMetricRunTimePassed() { | 1916 bool MinMetricRunTimePassed() { |
1901 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); | 1917 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); |
1902 if (start_runtime_ms_ == -1) { | 1918 if (start_runtime_ms_ == -1) { |
1903 start_runtime_ms_ = now; | 1919 start_runtime_ms_ = now; |
1904 return false; | 1920 return false; |
1905 } | 1921 } |
1906 int64_t elapsed_sec = (now - start_runtime_ms_) / 1000; | 1922 int64_t elapsed_sec = (now - start_runtime_ms_) / 1000; |
1907 return elapsed_sec > metrics::kMinRunTimeInSeconds * 2; | 1923 return elapsed_sec > metrics::kMinRunTimeInSeconds * 2; |
1908 } | 1924 } |
1909 | 1925 |
1910 void ModifyConfigs(VideoSendStream::Config* send_config, | 1926 void ModifyVideoConfigs( |
1911 std::vector<VideoReceiveStream::Config>* receive_configs, | 1927 VideoSendStream::Config* send_config, |
1912 VideoEncoderConfig* encoder_config) override { | 1928 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 1929 VideoEncoderConfig* encoder_config) override { |
1913 // NACK | 1930 // NACK |
1914 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1931 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
1915 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1932 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
1916 // FEC | 1933 // FEC |
1917 if (use_red_) { | 1934 if (use_red_) { |
1918 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; | 1935 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; |
1919 send_config->rtp.fec.red_payload_type = kRedPayloadType; | 1936 send_config->rtp.fec.red_payload_type = kRedPayloadType; |
1920 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; | 1937 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; |
1921 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; | 1938 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; |
1922 } | 1939 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1995 "WebRTC.Video.ReceivedPacketsLostInPercent")); | 2012 "WebRTC.Video.ReceivedPacketsLostInPercent")); |
1996 | 2013 |
1997 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "InputWidthInPixels")); | 2014 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "InputWidthInPixels")); |
1998 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "InputHeightInPixels")); | 2015 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "InputHeightInPixels")); |
1999 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "SentWidthInPixels")); | 2016 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "SentWidthInPixels")); |
2000 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "SentHeightInPixels")); | 2017 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "SentHeightInPixels")); |
2001 EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.ReceivedWidthInPixels")); | 2018 EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.ReceivedWidthInPixels")); |
2002 EXPECT_EQ(1, | 2019 EXPECT_EQ(1, |
2003 test::NumHistogramSamples("WebRTC.Video.ReceivedHeightInPixels")); | 2020 test::NumHistogramSamples("WebRTC.Video.ReceivedHeightInPixels")); |
2004 | 2021 |
2005 EXPECT_EQ(static_cast<int>(encoder_config_.streams[0].width), | 2022 EXPECT_EQ(static_cast<int>(video_encoder_config_.streams[0].width), |
2006 test::LastHistogramSample(video_prefix + "InputWidthInPixels")); | 2023 test::LastHistogramSample(video_prefix + "InputWidthInPixels")); |
2007 EXPECT_EQ(static_cast<int>(encoder_config_.streams[0].height), | 2024 EXPECT_EQ(static_cast<int>(video_encoder_config_.streams[0].height), |
2008 test::LastHistogramSample(video_prefix + "InputHeightInPixels")); | 2025 test::LastHistogramSample(video_prefix + "InputHeightInPixels")); |
2009 EXPECT_EQ(static_cast<int>(encoder_config_.streams[0].width), | 2026 EXPECT_EQ(static_cast<int>(video_encoder_config_.streams[0].width), |
2010 test::LastHistogramSample(video_prefix + "SentWidthInPixels")); | 2027 test::LastHistogramSample(video_prefix + "SentWidthInPixels")); |
2011 EXPECT_EQ(static_cast<int>(encoder_config_.streams[0].height), | 2028 EXPECT_EQ(static_cast<int>(video_encoder_config_.streams[0].height), |
2012 test::LastHistogramSample(video_prefix + "SentHeightInPixels")); | 2029 test::LastHistogramSample(video_prefix + "SentHeightInPixels")); |
2013 EXPECT_EQ(static_cast<int>(encoder_config_.streams[0].width), | 2030 EXPECT_EQ(static_cast<int>(video_encoder_config_.streams[0].width), |
2014 test::LastHistogramSample("WebRTC.Video.ReceivedWidthInPixels")); | 2031 test::LastHistogramSample("WebRTC.Video.ReceivedWidthInPixels")); |
2015 EXPECT_EQ(static_cast<int>(encoder_config_.streams[0].height), | 2032 EXPECT_EQ(static_cast<int>(video_encoder_config_.streams[0].height), |
2016 test::LastHistogramSample("WebRTC.Video.ReceivedHeightInPixels")); | 2033 test::LastHistogramSample("WebRTC.Video.ReceivedHeightInPixels")); |
2017 | 2034 |
2018 EXPECT_EQ(1, | 2035 EXPECT_EQ(1, |
2019 test::NumHistogramSamples(video_prefix + "InputFramesPerSecond")); | 2036 test::NumHistogramSamples(video_prefix + "InputFramesPerSecond")); |
2020 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "SentFramesPerSecond")); | 2037 EXPECT_EQ(1, test::NumHistogramSamples(video_prefix + "SentFramesPerSecond")); |
2021 EXPECT_EQ(1, test::NumHistogramSamples( | 2038 EXPECT_EQ(1, test::NumHistogramSamples( |
2022 "WebRTC.Video.DecodedFramesPerSecond")); | 2039 "WebRTC.Video.DecodedFramesPerSecond")); |
2023 EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.RenderFramesPerSecond")); | 2040 EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.RenderFramesPerSecond")); |
2024 | 2041 |
2025 EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.OnewayDelayInMs")); | 2042 EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.OnewayDelayInMs")); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2145 EXPECT_GT(sent_rtcp_dlrr_, 0); | 2162 EXPECT_GT(sent_rtcp_dlrr_, 0); |
2146 } else { | 2163 } else { |
2147 EXPECT_EQ(0, sent_rtcp_rrtr_); | 2164 EXPECT_EQ(0, sent_rtcp_rrtr_); |
2148 EXPECT_EQ(0, sent_rtcp_dlrr_); | 2165 EXPECT_EQ(0, sent_rtcp_dlrr_); |
2149 } | 2166 } |
2150 observation_complete_.Set(); | 2167 observation_complete_.Set(); |
2151 } | 2168 } |
2152 return SEND_PACKET; | 2169 return SEND_PACKET; |
2153 } | 2170 } |
2154 | 2171 |
2155 void ModifyConfigs(VideoSendStream::Config* send_config, | 2172 void ModifyVideoConfigs( |
2156 std::vector<VideoReceiveStream::Config>* receive_configs, | 2173 VideoSendStream::Config* send_config, |
2157 VideoEncoderConfig* encoder_config) override { | 2174 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 2175 VideoEncoderConfig* encoder_config) override { |
2158 (*receive_configs)[0].rtp.rtcp_mode = RtcpMode::kReducedSize; | 2176 (*receive_configs)[0].rtp.rtcp_mode = RtcpMode::kReducedSize; |
2159 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = | 2177 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = |
2160 enable_rrtr_; | 2178 enable_rrtr_; |
2161 } | 2179 } |
2162 | 2180 |
2163 void PerformTest() override { | 2181 void PerformTest() override { |
2164 EXPECT_TRUE(Wait()) | 2182 EXPECT_TRUE(Wait()) |
2165 << "Timed out while waiting for RTCP SR/RR packets to be sent."; | 2183 << "Timed out while waiting for RTCP SR/RR packets to be sent."; |
2166 } | 2184 } |
2167 | 2185 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2214 } | 2232 } |
2215 | 2233 |
2216 if (ssrcs_to_observe_ == 0) | 2234 if (ssrcs_to_observe_ == 0) |
2217 observation_complete_.Set(); | 2235 observation_complete_.Set(); |
2218 | 2236 |
2219 return SEND_PACKET; | 2237 return SEND_PACKET; |
2220 } | 2238 } |
2221 | 2239 |
2222 size_t GetNumStreams() const override { return num_ssrcs_; } | 2240 size_t GetNumStreams() const override { return num_ssrcs_; } |
2223 | 2241 |
2224 void ModifyConfigs(VideoSendStream::Config* send_config, | 2242 void ModifyVideoConfigs( |
2225 std::vector<VideoReceiveStream::Config>* receive_configs, | 2243 VideoSendStream::Config* send_config, |
2226 VideoEncoderConfig* encoder_config) override { | 2244 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 2245 VideoEncoderConfig* encoder_config) override { |
2227 if (num_ssrcs_ > 1) { | 2246 if (num_ssrcs_ > 1) { |
2228 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. | 2247 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. |
2229 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { | 2248 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { |
2230 encoder_config->streams[i].min_bitrate_bps = 10000; | 2249 encoder_config->streams[i].min_bitrate_bps = 10000; |
2231 encoder_config->streams[i].target_bitrate_bps = 15000; | 2250 encoder_config->streams[i].target_bitrate_bps = 15000; |
2232 encoder_config->streams[i].max_bitrate_bps = 20000; | 2251 encoder_config->streams[i].max_bitrate_bps = 20000; |
2233 } | 2252 } |
2234 } | 2253 } |
2235 | 2254 |
2236 encoder_config_all_streams_ = *encoder_config; | 2255 video_encoder_config_all_streams_ = *encoder_config; |
2237 if (send_single_ssrc_first_) | 2256 if (send_single_ssrc_first_) |
2238 encoder_config->streams.resize(1); | 2257 encoder_config->streams.resize(1); |
2239 } | 2258 } |
2240 | 2259 |
2241 void OnStreamsCreated( | 2260 void OnVideoStreamsCreated( |
2242 VideoSendStream* send_stream, | 2261 VideoSendStream* send_stream, |
2243 const std::vector<VideoReceiveStream*>& receive_streams) override { | 2262 const std::vector<VideoReceiveStream*>& receive_streams) override { |
2244 send_stream_ = send_stream; | 2263 send_stream_ = send_stream; |
2245 } | 2264 } |
2246 | 2265 |
2247 void PerformTest() override { | 2266 void PerformTest() override { |
2248 EXPECT_TRUE(Wait()) << "Timed out while waiting for " | 2267 EXPECT_TRUE(Wait()) << "Timed out while waiting for " |
2249 << (send_single_ssrc_first_ ? "first SSRC." | 2268 << (send_single_ssrc_first_ ? "first SSRC." |
2250 : "SSRCs."); | 2269 : "SSRCs."); |
2251 | 2270 |
2252 if (send_single_ssrc_first_) { | 2271 if (send_single_ssrc_first_) { |
2253 // Set full simulcast and continue with the rest of the SSRCs. | 2272 // Set full simulcast and continue with the rest of the SSRCs. |
2254 send_stream_->ReconfigureVideoEncoder(encoder_config_all_streams_); | 2273 send_stream_->ReconfigureVideoEncoder( |
| 2274 video_encoder_config_all_streams_); |
2255 EXPECT_TRUE(Wait()) << "Timed out while waiting on additional SSRCs."; | 2275 EXPECT_TRUE(Wait()) << "Timed out while waiting on additional SSRCs."; |
2256 } | 2276 } |
2257 } | 2277 } |
2258 | 2278 |
2259 private: | 2279 private: |
2260 std::map<uint32_t, bool> valid_ssrcs_; | 2280 std::map<uint32_t, bool> valid_ssrcs_; |
2261 std::map<uint32_t, bool> is_observed_; | 2281 std::map<uint32_t, bool> is_observed_; |
2262 | 2282 |
2263 const size_t num_ssrcs_; | 2283 const size_t num_ssrcs_; |
2264 const bool send_single_ssrc_first_; | 2284 const bool send_single_ssrc_first_; |
2265 | 2285 |
2266 size_t ssrcs_to_observe_; | 2286 size_t ssrcs_to_observe_; |
2267 bool expect_single_ssrc_; | 2287 bool expect_single_ssrc_; |
2268 | 2288 |
2269 VideoSendStream* send_stream_; | 2289 VideoSendStream* send_stream_; |
2270 VideoEncoderConfig encoder_config_all_streams_; | 2290 VideoEncoderConfig video_encoder_config_all_streams_; |
2271 } test(kSendSsrcs, num_ssrcs, send_single_ssrc_first); | 2291 } test(kSendSsrcs, num_ssrcs, send_single_ssrc_first); |
2272 | 2292 |
2273 RunBaseTest(&test, FakeNetworkPipe::Config()); | 2293 RunBaseTest(&test, FakeNetworkPipe::Config()); |
2274 } | 2294 } |
2275 | 2295 |
2276 TEST_F(EndToEndTest, ReportsSetEncoderRates) { | 2296 TEST_F(EndToEndTest, ReportsSetEncoderRates) { |
2277 class EncoderRateStatsTest : public test::EndToEndTest, | 2297 class EncoderRateStatsTest : public test::EndToEndTest, |
2278 public test::FakeEncoder { | 2298 public test::FakeEncoder { |
2279 public: | 2299 public: |
2280 EncoderRateStatsTest() | 2300 EncoderRateStatsTest() |
2281 : EndToEndTest(kDefaultTimeoutMs), | 2301 : EndToEndTest(kDefaultTimeoutMs), |
2282 FakeEncoder(Clock::GetRealTimeClock()), | 2302 FakeEncoder(Clock::GetRealTimeClock()), |
2283 send_stream_(nullptr), | 2303 send_stream_(nullptr), |
2284 bitrate_kbps_(0) {} | 2304 bitrate_kbps_(0) {} |
2285 | 2305 |
2286 void OnStreamsCreated( | 2306 void OnVideoStreamsCreated( |
2287 VideoSendStream* send_stream, | 2307 VideoSendStream* send_stream, |
2288 const std::vector<VideoReceiveStream*>& receive_streams) override { | 2308 const std::vector<VideoReceiveStream*>& receive_streams) override { |
2289 send_stream_ = send_stream; | 2309 send_stream_ = send_stream; |
2290 } | 2310 } |
2291 | 2311 |
2292 void ModifyConfigs(VideoSendStream::Config* send_config, | 2312 void ModifyVideoConfigs( |
2293 std::vector<VideoReceiveStream::Config>* receive_configs, | 2313 VideoSendStream::Config* send_config, |
2294 VideoEncoderConfig* encoder_config) override { | 2314 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 2315 VideoEncoderConfig* encoder_config) override { |
2295 send_config->encoder_settings.encoder = this; | 2316 send_config->encoder_settings.encoder = this; |
2296 } | 2317 } |
2297 | 2318 |
2298 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override { | 2319 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override { |
2299 // Make sure not to trigger on any default zero bitrates. | 2320 // Make sure not to trigger on any default zero bitrates. |
2300 if (new_target_bitrate == 0) | 2321 if (new_target_bitrate == 0) |
2301 return 0; | 2322 return 0; |
2302 rtc::CritScope lock(&crit_); | 2323 rtc::CritScope lock(&crit_); |
2303 bitrate_kbps_ = new_target_bitrate; | 2324 bitrate_kbps_ = new_target_bitrate; |
2304 observation_complete_.Set(); | 2325 observation_complete_.Set(); |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2509 } | 2530 } |
2510 return true; | 2531 return true; |
2511 } | 2532 } |
2512 | 2533 |
2513 Call::Config GetSenderCallConfig() override { | 2534 Call::Config GetSenderCallConfig() override { |
2514 Call::Config config = EndToEndTest::GetSenderCallConfig(); | 2535 Call::Config config = EndToEndTest::GetSenderCallConfig(); |
2515 config.bitrate_config.start_bitrate_bps = kStartBitrateBps; | 2536 config.bitrate_config.start_bitrate_bps = kStartBitrateBps; |
2516 return config; | 2537 return config; |
2517 } | 2538 } |
2518 | 2539 |
2519 void ModifyConfigs(VideoSendStream::Config* send_config, | 2540 void ModifyVideoConfigs( |
2520 std::vector<VideoReceiveStream::Config>* receive_configs, | 2541 VideoSendStream::Config* send_config, |
2521 VideoEncoderConfig* encoder_config) override { | 2542 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 2543 VideoEncoderConfig* encoder_config) override { |
2522 send_config->pre_encode_callback = this; // Used to inject delay. | 2544 send_config->pre_encode_callback = this; // Used to inject delay. |
2523 expected_cname_ = send_config->rtp.c_name = "SomeCName"; | 2545 expected_cname_ = send_config->rtp.c_name = "SomeCName"; |
2524 | 2546 |
2525 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs; | 2547 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs; |
2526 for (size_t i = 0; i < ssrcs.size(); ++i) { | 2548 for (size_t i = 0; i < ssrcs.size(); ++i) { |
2527 expected_send_ssrcs_.insert(ssrcs[i]); | 2549 expected_send_ssrcs_.insert(ssrcs[i]); |
2528 expected_receive_ssrcs_.push_back( | 2550 expected_receive_ssrcs_.push_back( |
2529 (*receive_configs)[i].rtp.remote_ssrc); | 2551 (*receive_configs)[i].rtp.remote_ssrc); |
2530 (*receive_configs)[i].render_delay_ms = kExpectedRenderDelayMs; | 2552 (*receive_configs)[i].render_delay_ms = kExpectedRenderDelayMs; |
2531 } | 2553 } |
2532 } | 2554 } |
2533 | 2555 |
2534 size_t GetNumStreams() const override { return kNumSsrcs; } | 2556 size_t GetNumStreams() const override { return kNumSsrcs; } |
2535 | 2557 |
2536 void OnStreamsCreated( | 2558 void OnVideoStreamsCreated( |
2537 VideoSendStream* send_stream, | 2559 VideoSendStream* send_stream, |
2538 const std::vector<VideoReceiveStream*>& receive_streams) override { | 2560 const std::vector<VideoReceiveStream*>& receive_streams) override { |
2539 send_stream_ = send_stream; | 2561 send_stream_ = send_stream; |
2540 receive_streams_ = receive_streams; | 2562 receive_streams_ = receive_streams; |
2541 } | 2563 } |
2542 | 2564 |
2543 void PerformTest() override { | 2565 void PerformTest() override { |
2544 Clock* clock = Clock::GetRealTimeClock(); | 2566 Clock* clock = Clock::GetRealTimeClock(); |
2545 int64_t now = clock->TimeInMilliseconds(); | 2567 int64_t now = clock->TimeInMilliseconds(); |
2546 int64_t stop_time = now + test::CallTest::kLongTimeoutMs; | 2568 int64_t stop_time = now + test::CallTest::kLongTimeoutMs; |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2611 TEST_F(EndToEndTest, TestReceivedRtpPacketStats) { | 2633 TEST_F(EndToEndTest, TestReceivedRtpPacketStats) { |
2612 static const size_t kNumRtpPacketsToSend = 5; | 2634 static const size_t kNumRtpPacketsToSend = 5; |
2613 class ReceivedRtpStatsObserver : public test::EndToEndTest { | 2635 class ReceivedRtpStatsObserver : public test::EndToEndTest { |
2614 public: | 2636 public: |
2615 ReceivedRtpStatsObserver() | 2637 ReceivedRtpStatsObserver() |
2616 : EndToEndTest(kDefaultTimeoutMs), | 2638 : EndToEndTest(kDefaultTimeoutMs), |
2617 receive_stream_(nullptr), | 2639 receive_stream_(nullptr), |
2618 sent_rtp_(0) {} | 2640 sent_rtp_(0) {} |
2619 | 2641 |
2620 private: | 2642 private: |
2621 void OnStreamsCreated( | 2643 void OnVideoStreamsCreated( |
2622 VideoSendStream* send_stream, | 2644 VideoSendStream* send_stream, |
2623 const std::vector<VideoReceiveStream*>& receive_streams) override { | 2645 const std::vector<VideoReceiveStream*>& receive_streams) override { |
2624 receive_stream_ = receive_streams[0]; | 2646 receive_stream_ = receive_streams[0]; |
2625 } | 2647 } |
2626 | 2648 |
2627 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 2649 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
2628 if (sent_rtp_ >= kNumRtpPacketsToSend) { | 2650 if (sent_rtp_ >= kNumRtpPacketsToSend) { |
2629 VideoReceiveStream::Stats stats = receive_stream_->GetStats(); | 2651 VideoReceiveStream::Stats stats = receive_stream_->GetStats(); |
2630 if (kNumRtpPacketsToSend == stats.rtp_stats.transmitted.packets) { | 2652 if (kNumRtpPacketsToSend == stats.rtp_stats.transmitted.packets) { |
2631 observation_complete_.Set(); | 2653 observation_complete_.Set(); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2687 observed_redundant_retransmission_[header.ssrc] = true; | 2709 observed_redundant_retransmission_[header.ssrc] = true; |
2688 if (--ssrcs_to_observe_ == 0) | 2710 if (--ssrcs_to_observe_ == 0) |
2689 observation_complete_.Set(); | 2711 observation_complete_.Set(); |
2690 } | 2712 } |
2691 | 2713 |
2692 return SEND_PACKET; | 2714 return SEND_PACKET; |
2693 } | 2715 } |
2694 | 2716 |
2695 size_t GetNumStreams() const override { return kNumSsrcs; } | 2717 size_t GetNumStreams() const override { return kNumSsrcs; } |
2696 | 2718 |
2697 void ModifyConfigs(VideoSendStream::Config* send_config, | 2719 void ModifyVideoConfigs( |
2698 std::vector<VideoReceiveStream::Config>* receive_configs, | 2720 VideoSendStream::Config* send_config, |
2699 VideoEncoderConfig* encoder_config) override { | 2721 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 2722 VideoEncoderConfig* encoder_config) override { |
2700 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. | 2723 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. |
2701 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { | 2724 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { |
2702 encoder_config->streams[i].min_bitrate_bps = 10000; | 2725 encoder_config->streams[i].min_bitrate_bps = 10000; |
2703 encoder_config->streams[i].target_bitrate_bps = 15000; | 2726 encoder_config->streams[i].target_bitrate_bps = 15000; |
2704 encoder_config->streams[i].max_bitrate_bps = 20000; | 2727 encoder_config->streams[i].max_bitrate_bps = 20000; |
2705 } | 2728 } |
2706 | 2729 |
2707 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; | 2730 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; |
2708 | 2731 |
2709 for (size_t i = 0; i < kNumSsrcs; ++i) | 2732 for (size_t i = 0; i < kNumSsrcs; ++i) |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2827 test::PacketTransport receive_transport(nullptr, &observer, | 2850 test::PacketTransport receive_transport(nullptr, &observer, |
2828 test::PacketTransport::kReceiver, | 2851 test::PacketTransport::kReceiver, |
2829 FakeNetworkPipe::Config()); | 2852 FakeNetworkPipe::Config()); |
2830 send_transport.SetReceiver(receiver_call_->Receiver()); | 2853 send_transport.SetReceiver(receiver_call_->Receiver()); |
2831 receive_transport.SetReceiver(sender_call_->Receiver()); | 2854 receive_transport.SetReceiver(sender_call_->Receiver()); |
2832 | 2855 |
2833 CreateSendConfig(kNumSsrcs, &send_transport); | 2856 CreateSendConfig(kNumSsrcs, &send_transport); |
2834 | 2857 |
2835 if (use_rtx) { | 2858 if (use_rtx) { |
2836 for (size_t i = 0; i < kNumSsrcs; ++i) { | 2859 for (size_t i = 0; i < kNumSsrcs; ++i) { |
2837 send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); | 2860 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); |
2838 } | 2861 } |
2839 send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; | 2862 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; |
2840 } | 2863 } |
2841 | 2864 |
2842 // Lower bitrates so that all streams send initially. | 2865 // Lower bitrates so that all streams send initially. |
2843 for (size_t i = 0; i < encoder_config_.streams.size(); ++i) { | 2866 for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) { |
2844 encoder_config_.streams[i].min_bitrate_bps = 10000; | 2867 video_encoder_config_.streams[i].min_bitrate_bps = 10000; |
2845 encoder_config_.streams[i].target_bitrate_bps = 15000; | 2868 video_encoder_config_.streams[i].target_bitrate_bps = 15000; |
2846 encoder_config_.streams[i].max_bitrate_bps = 20000; | 2869 video_encoder_config_.streams[i].max_bitrate_bps = 20000; |
2847 } | 2870 } |
2848 | 2871 |
2849 // Use the same total bitrates when sending a single stream to avoid lowering | 2872 // Use the same total bitrates when sending a single stream to avoid lowering |
2850 // the bitrate estimate and requiring a subsequent rampup. | 2873 // the bitrate estimate and requiring a subsequent rampup. |
2851 VideoEncoderConfig one_stream = encoder_config_; | 2874 VideoEncoderConfig one_stream = video_encoder_config_; |
2852 one_stream.streams.resize(1); | 2875 one_stream.streams.resize(1); |
2853 for (size_t i = 1; i < encoder_config_.streams.size(); ++i) { | 2876 for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) { |
2854 one_stream.streams.front().min_bitrate_bps += | 2877 one_stream.streams.front().min_bitrate_bps += |
2855 encoder_config_.streams[i].min_bitrate_bps; | 2878 video_encoder_config_.streams[i].min_bitrate_bps; |
2856 one_stream.streams.front().target_bitrate_bps += | 2879 one_stream.streams.front().target_bitrate_bps += |
2857 encoder_config_.streams[i].target_bitrate_bps; | 2880 video_encoder_config_.streams[i].target_bitrate_bps; |
2858 one_stream.streams.front().max_bitrate_bps += | 2881 one_stream.streams.front().max_bitrate_bps += |
2859 encoder_config_.streams[i].max_bitrate_bps; | 2882 video_encoder_config_.streams[i].max_bitrate_bps; |
2860 } | 2883 } |
2861 | 2884 |
2862 CreateMatchingReceiveConfigs(&receive_transport); | 2885 CreateMatchingReceiveConfigs(&receive_transport); |
2863 | 2886 |
2864 CreateStreams(); | 2887 CreateStreams(); |
2865 CreateFrameGeneratorCapturer(); | 2888 CreateFrameGeneratorCapturer(); |
2866 | 2889 |
2867 Start(); | 2890 Start(); |
2868 EXPECT_TRUE(observer.Wait()) | 2891 EXPECT_TRUE(observer.Wait()) |
2869 << "Timed out waiting for all SSRCs to send packets."; | 2892 << "Timed out waiting for all SSRCs to send packets."; |
2870 | 2893 |
2871 // Test stream resetting more than once to make sure that the state doesn't | 2894 // Test stream resetting more than once to make sure that the state doesn't |
2872 // get set once (this could be due to using std::map::insert for instance). | 2895 // get set once (this could be due to using std::map::insert for instance). |
2873 for (size_t i = 0; i < 3; ++i) { | 2896 for (size_t i = 0; i < 3; ++i) { |
2874 frame_generator_capturer_->Stop(); | 2897 frame_generator_capturer_->Stop(); |
2875 sender_call_->DestroyVideoSendStream(send_stream_); | 2898 sender_call_->DestroyVideoSendStream(video_send_stream_); |
2876 | 2899 |
2877 // Re-create VideoSendStream with only one stream. | 2900 // Re-create VideoSendStream with only one stream. |
2878 send_stream_ = | 2901 video_send_stream_ = |
2879 sender_call_->CreateVideoSendStream(send_config_, one_stream); | 2902 sender_call_->CreateVideoSendStream(video_send_config_, one_stream); |
2880 send_stream_->Start(); | 2903 video_send_stream_->Start(); |
2881 CreateFrameGeneratorCapturer(); | 2904 CreateFrameGeneratorCapturer(); |
2882 frame_generator_capturer_->Start(); | 2905 frame_generator_capturer_->Start(); |
2883 | 2906 |
2884 observer.ResetExpectedSsrcs(1); | 2907 observer.ResetExpectedSsrcs(1); |
2885 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; | 2908 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; |
2886 | 2909 |
2887 // Reconfigure back to use all streams. | 2910 // Reconfigure back to use all streams. |
2888 send_stream_->ReconfigureVideoEncoder(encoder_config_); | 2911 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); |
2889 observer.ResetExpectedSsrcs(kNumSsrcs); | 2912 observer.ResetExpectedSsrcs(kNumSsrcs); |
2890 EXPECT_TRUE(observer.Wait()) | 2913 EXPECT_TRUE(observer.Wait()) |
2891 << "Timed out waiting for all SSRCs to send packets."; | 2914 << "Timed out waiting for all SSRCs to send packets."; |
2892 | 2915 |
2893 // Reconfigure down to one stream. | 2916 // Reconfigure down to one stream. |
2894 send_stream_->ReconfigureVideoEncoder(one_stream); | 2917 video_send_stream_->ReconfigureVideoEncoder(one_stream); |
2895 observer.ResetExpectedSsrcs(1); | 2918 observer.ResetExpectedSsrcs(1); |
2896 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; | 2919 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; |
2897 | 2920 |
2898 // Reconfigure back to use all streams. | 2921 // Reconfigure back to use all streams. |
2899 send_stream_->ReconfigureVideoEncoder(encoder_config_); | 2922 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); |
2900 observer.ResetExpectedSsrcs(kNumSsrcs); | 2923 observer.ResetExpectedSsrcs(kNumSsrcs); |
2901 EXPECT_TRUE(observer.Wait()) | 2924 EXPECT_TRUE(observer.Wait()) |
2902 << "Timed out waiting for all SSRCs to send packets."; | 2925 << "Timed out waiting for all SSRCs to send packets."; |
2903 } | 2926 } |
2904 | 2927 |
2905 send_transport.StopSending(); | 2928 send_transport.StopSending(); |
2906 receive_transport.StopSending(); | 2929 receive_transport.StopSending(); |
2907 | 2930 |
2908 Stop(); | 2931 Stop(); |
2909 DestroyStreams(); | 2932 DestroyStreams(); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2966 ++receiver_rtcp_; | 2989 ++receiver_rtcp_; |
2967 packet_event_.Set(); | 2990 packet_event_.Set(); |
2968 return SEND_PACKET; | 2991 return SEND_PACKET; |
2969 } | 2992 } |
2970 | 2993 |
2971 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { | 2994 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { |
2972 sender_call_ = sender_call; | 2995 sender_call_ = sender_call; |
2973 receiver_call_ = receiver_call; | 2996 receiver_call_ = receiver_call; |
2974 } | 2997 } |
2975 | 2998 |
2976 void ModifyConfigs(VideoSendStream::Config* send_config, | 2999 void ModifyVideoConfigs( |
2977 std::vector<VideoReceiveStream::Config>* receive_configs, | 3000 VideoSendStream::Config* send_config, |
2978 VideoEncoderConfig* encoder_config) override { | 3001 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 3002 VideoEncoderConfig* encoder_config) override { |
2979 send_config->encoder_settings.encoder = this; | 3003 send_config->encoder_settings.encoder = this; |
2980 } | 3004 } |
2981 | 3005 |
2982 void PerformTest() override { | 3006 void PerformTest() override { |
2983 EXPECT_TRUE(encoded_frames_.Wait(kDefaultTimeoutMs)) | 3007 EXPECT_TRUE(encoded_frames_.Wait(kDefaultTimeoutMs)) |
2984 << "No frames received by the encoder."; | 3008 << "No frames received by the encoder."; |
2985 // Wait for packets from both sender/receiver. | 3009 // Wait for packets from both sender/receiver. |
2986 WaitForPacketsOrSilence(false, false); | 3010 WaitForPacketsOrSilence(false, false); |
2987 | 3011 |
2988 // Sender-side network down. | 3012 // Sender-side network down. |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3142 input_image, codec_specific_info, frame_types); | 3166 input_image, codec_specific_info, frame_types); |
3143 } | 3167 } |
3144 }; | 3168 }; |
3145 | 3169 |
3146 CreateSenderCall(Call::Config()); | 3170 CreateSenderCall(Call::Config()); |
3147 sender_call_->SignalNetworkState(kNetworkDown); | 3171 sender_call_->SignalNetworkState(kNetworkDown); |
3148 | 3172 |
3149 UnusedTransport transport; | 3173 UnusedTransport transport; |
3150 CreateSendConfig(1, &transport); | 3174 CreateSendConfig(1, &transport); |
3151 UnusedEncoder unused_encoder; | 3175 UnusedEncoder unused_encoder; |
3152 send_config_.encoder_settings.encoder = &unused_encoder; | 3176 video_send_config_.encoder_settings.encoder = &unused_encoder; |
3153 CreateStreams(); | 3177 CreateStreams(); |
3154 CreateFrameGeneratorCapturer(); | 3178 CreateFrameGeneratorCapturer(); |
3155 | 3179 |
3156 Start(); | 3180 Start(); |
3157 SleepMs(kSilenceTimeoutMs); | 3181 SleepMs(kSilenceTimeoutMs); |
3158 Stop(); | 3182 Stop(); |
3159 | 3183 |
3160 DestroyStreams(); | 3184 DestroyStreams(); |
3161 } | 3185 } |
3162 | 3186 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3220 EXPECT_TRUE(default_receive_config.rtp.rtx.empty()) | 3244 EXPECT_TRUE(default_receive_config.rtp.rtx.empty()) |
3221 << "Enabling RTX requires rtpmap: rtx negotiation."; | 3245 << "Enabling RTX requires rtpmap: rtx negotiation."; |
3222 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) | 3246 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) |
3223 << "Enabling RTP extensions require negotiation."; | 3247 << "Enabling RTP extensions require negotiation."; |
3224 | 3248 |
3225 VerifyEmptyNackConfig(default_receive_config.rtp.nack); | 3249 VerifyEmptyNackConfig(default_receive_config.rtp.nack); |
3226 VerifyEmptyFecConfig(default_receive_config.rtp.fec); | 3250 VerifyEmptyFecConfig(default_receive_config.rtp.fec); |
3227 } | 3251 } |
3228 | 3252 |
3229 } // namespace webrtc | 3253 } // namespace webrtc |
OLD | NEW |