| 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 | 
|---|