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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 private: | 346 private: |
347 int no_frames_to_wait_for_; | 347 int no_frames_to_wait_for_; |
348 VideoRotation expected_rotation_; | 348 VideoRotation expected_rotation_; |
349 std::string payload_name_; | 349 std::string payload_name_; |
350 std::unique_ptr<webrtc::VideoEncoder> encoder_; | 350 std::unique_ptr<webrtc::VideoEncoder> encoder_; |
351 std::unique_ptr<webrtc::VideoDecoder> decoder_; | 351 std::unique_ptr<webrtc::VideoDecoder> decoder_; |
352 int frame_counter_; | 352 int frame_counter_; |
353 }; | 353 }; |
354 | 354 |
355 TEST_F(EndToEndTest, SendsAndReceivesVP8Rotation90) { | 355 TEST_F(EndToEndTest, SendsAndReceivesVP8Rotation90) { |
356 CodecObserver test(5, kVideoRotation_90, "VP8", | 356 CodecObserver test(5, kVideoRotation_90, "VP8", VP8Encoder::Create(), |
357 VideoEncoder::Create(VideoEncoder::kVp8), | |
358 VP8Decoder::Create()); | 357 VP8Decoder::Create()); |
359 RunBaseTest(&test); | 358 RunBaseTest(&test); |
360 } | 359 } |
361 | 360 |
362 #if !defined(RTC_DISABLE_VP9) | 361 #if !defined(RTC_DISABLE_VP9) |
363 TEST_F(EndToEndTest, SendsAndReceivesVP9) { | 362 TEST_F(EndToEndTest, SendsAndReceivesVP9) { |
364 CodecObserver test(500, kVideoRotation_0, "VP9", | 363 CodecObserver test(500, kVideoRotation_0, "VP9", VP9Encoder::Create(), |
365 VideoEncoder::Create(VideoEncoder::kVp9), | |
366 VP9Decoder::Create()); | 364 VP9Decoder::Create()); |
367 RunBaseTest(&test); | 365 RunBaseTest(&test); |
368 } | 366 } |
369 | 367 |
370 TEST_F(EndToEndTest, SendsAndReceivesVP9VideoRotation90) { | 368 TEST_F(EndToEndTest, SendsAndReceivesVP9VideoRotation90) { |
371 CodecObserver test(5, kVideoRotation_90, "VP9", | 369 CodecObserver test(5, kVideoRotation_90, "VP9", VP9Encoder::Create(), |
372 VideoEncoder::Create(VideoEncoder::kVp9), | |
373 VP9Decoder::Create()); | 370 VP9Decoder::Create()); |
374 RunBaseTest(&test); | 371 RunBaseTest(&test); |
375 } | 372 } |
376 #endif // !defined(RTC_DISABLE_VP9) | 373 #endif // !defined(RTC_DISABLE_VP9) |
377 | 374 |
378 #if defined(WEBRTC_END_TO_END_H264_TESTS) | 375 #if defined(WEBRTC_END_TO_END_H264_TESTS) |
379 | 376 |
380 TEST_F(EndToEndTest, SendsAndReceivesH264) { | 377 TEST_F(EndToEndTest, SendsAndReceivesH264) { |
381 CodecObserver test(500, kVideoRotation_0, "H264", | 378 CodecObserver test(500, kVideoRotation_0, "H264", H264Encoder::Create(), |
382 VideoEncoder::Create(VideoEncoder::kH264), | |
383 H264Decoder::Create()); | 379 H264Decoder::Create()); |
384 RunBaseTest(&test); | 380 RunBaseTest(&test); |
385 } | 381 } |
386 | 382 |
387 TEST_F(EndToEndTest, SendsAndReceivesH264VideoRotation90) { | 383 TEST_F(EndToEndTest, SendsAndReceivesH264VideoRotation90) { |
388 CodecObserver test(5, kVideoRotation_90, "H264", | 384 CodecObserver test(5, kVideoRotation_90, "H264", H264Encoder::Create(), |
389 VideoEncoder::Create(VideoEncoder::kH264), | |
390 H264Decoder::Create()); | 385 H264Decoder::Create()); |
391 RunBaseTest(&test); | 386 RunBaseTest(&test); |
392 } | 387 } |
393 | 388 |
394 #endif // defined(WEBRTC_END_TO_END_H264_TESTS) | 389 #endif // defined(WEBRTC_END_TO_END_H264_TESTS) |
395 | 390 |
396 TEST_F(EndToEndTest, ReceiverUsesLocalSsrc) { | 391 TEST_F(EndToEndTest, ReceiverUsesLocalSsrc) { |
397 class SyncRtcpObserver : public test::EndToEndTest { | 392 class SyncRtcpObserver : public test::EndToEndTest { |
398 public: | 393 public: |
399 SyncRtcpObserver() : EndToEndTest(kDefaultTimeoutMs) {} | 394 SyncRtcpObserver() : EndToEndTest(kDefaultTimeoutMs) {} |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 | 665 |
671 TEST_F(EndToEndTest, ReceivedUlpfecPacketsNotNacked) { | 666 TEST_F(EndToEndTest, ReceivedUlpfecPacketsNotNacked) { |
672 class UlpfecNackObserver : public test::EndToEndTest { | 667 class UlpfecNackObserver : public test::EndToEndTest { |
673 public: | 668 public: |
674 UlpfecNackObserver() | 669 UlpfecNackObserver() |
675 : EndToEndTest(kDefaultTimeoutMs), | 670 : EndToEndTest(kDefaultTimeoutMs), |
676 state_(kFirstPacket), | 671 state_(kFirstPacket), |
677 ulpfec_sequence_number_(0), | 672 ulpfec_sequence_number_(0), |
678 has_last_sequence_number_(false), | 673 has_last_sequence_number_(false), |
679 last_sequence_number_(0), | 674 last_sequence_number_(0), |
680 encoder_(VideoEncoder::Create(VideoEncoder::EncoderType::kVp8)), | 675 encoder_(VP8Encoder::Create()), |
681 decoder_(VP8Decoder::Create()) {} | 676 decoder_(VP8Decoder::Create()) {} |
682 | 677 |
683 private: | 678 private: |
684 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 679 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
685 rtc::CritScope lock_(&crit_); | 680 rtc::CritScope lock_(&crit_); |
686 RTPHeader header; | 681 RTPHeader header; |
687 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 682 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
688 | 683 |
689 int encapsulated_payload_type = -1; | 684 int encapsulated_payload_type = -1; |
690 if (header.payloadType == kRedPayloadType) { | 685 if (header.payloadType == kRedPayloadType) { |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
838 static const int kDroppedFrameNumber = 10; | 833 static const int kDroppedFrameNumber = 10; |
839 class RetransmissionObserver : public test::EndToEndTest, | 834 class RetransmissionObserver : public test::EndToEndTest, |
840 public I420FrameCallback { | 835 public I420FrameCallback { |
841 public: | 836 public: |
842 RetransmissionObserver(bool enable_rtx, bool enable_red) | 837 RetransmissionObserver(bool enable_rtx, bool enable_red) |
843 : EndToEndTest(kDefaultTimeoutMs), | 838 : EndToEndTest(kDefaultTimeoutMs), |
844 payload_type_(GetPayloadType(false, enable_red)), | 839 payload_type_(GetPayloadType(false, enable_red)), |
845 retransmission_ssrc_(enable_rtx ? kSendRtxSsrcs[0] | 840 retransmission_ssrc_(enable_rtx ? kSendRtxSsrcs[0] |
846 : kVideoSendSsrcs[0]), | 841 : kVideoSendSsrcs[0]), |
847 retransmission_payload_type_(GetPayloadType(enable_rtx, enable_red)), | 842 retransmission_payload_type_(GetPayloadType(enable_rtx, enable_red)), |
848 encoder_(VideoEncoder::Create(VideoEncoder::EncoderType::kVp8)), | 843 encoder_(VP8Encoder::Create()), |
849 marker_bits_observed_(0), | 844 marker_bits_observed_(0), |
850 retransmitted_timestamp_(0) {} | 845 retransmitted_timestamp_(0) {} |
851 | 846 |
852 private: | 847 private: |
853 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 848 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
854 rtc::CritScope lock(&crit_); | 849 rtc::CritScope lock(&crit_); |
855 RTPHeader header; | 850 RTPHeader header; |
856 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 851 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
857 | 852 |
858 // Ignore padding-only packets over RTX. | 853 // Ignore padding-only packets over RTX. |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1237 std::unique_ptr<Call> receiver_call(Call::Create(config)); | 1232 std::unique_ptr<Call> receiver_call(Call::Create(config)); |
1238 std::unique_ptr<test::DirectTransport> sender_transport( | 1233 std::unique_ptr<test::DirectTransport> sender_transport( |
1239 CreateSendTransport(sender_call.get())); | 1234 CreateSendTransport(sender_call.get())); |
1240 std::unique_ptr<test::DirectTransport> receiver_transport( | 1235 std::unique_ptr<test::DirectTransport> receiver_transport( |
1241 CreateReceiveTransport(receiver_call.get())); | 1236 CreateReceiveTransport(receiver_call.get())); |
1242 sender_transport->SetReceiver(receiver_call->Receiver()); | 1237 sender_transport->SetReceiver(receiver_call->Receiver()); |
1243 receiver_transport->SetReceiver(sender_call->Receiver()); | 1238 receiver_transport->SetReceiver(sender_call->Receiver()); |
1244 | 1239 |
1245 std::unique_ptr<VideoEncoder> encoders[kNumStreams]; | 1240 std::unique_ptr<VideoEncoder> encoders[kNumStreams]; |
1246 for (size_t i = 0; i < kNumStreams; ++i) | 1241 for (size_t i = 0; i < kNumStreams; ++i) |
1247 encoders[i].reset(VideoEncoder::Create(VideoEncoder::kVp8)); | 1242 encoders[i].reset(VP8Encoder::Create()); |
1248 | 1243 |
1249 VideoSendStream* send_streams[kNumStreams]; | 1244 VideoSendStream* send_streams[kNumStreams]; |
1250 VideoReceiveStream* receive_streams[kNumStreams]; | 1245 VideoReceiveStream* receive_streams[kNumStreams]; |
1251 | 1246 |
1252 test::FrameGeneratorCapturer* frame_generators[kNumStreams]; | 1247 test::FrameGeneratorCapturer* frame_generators[kNumStreams]; |
1253 std::vector<std::unique_ptr<VideoDecoder>> allocated_decoders; | 1248 std::vector<std::unique_ptr<VideoDecoder>> allocated_decoders; |
1254 for (size_t i = 0; i < kNumStreams; ++i) { | 1249 for (size_t i = 0; i < kNumStreams; ++i) { |
1255 uint32_t ssrc = codec_settings[i].ssrc; | 1250 uint32_t ssrc = codec_settings[i].ssrc; |
1256 int width = codec_settings[i].width; | 1251 int width = codec_settings[i].width; |
1257 int height = codec_settings[i].height; | 1252 int height = codec_settings[i].height; |
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2087 bool screenshare) { | 2082 bool screenshare) { |
2088 class StatsObserver : public test::EndToEndTest, | 2083 class StatsObserver : public test::EndToEndTest, |
2089 public rtc::VideoSinkInterface<VideoFrame> { | 2084 public rtc::VideoSinkInterface<VideoFrame> { |
2090 public: | 2085 public: |
2091 StatsObserver(bool use_rtx, bool use_red, bool screenshare) | 2086 StatsObserver(bool use_rtx, bool use_red, bool screenshare) |
2092 : EndToEndTest(kLongTimeoutMs), | 2087 : EndToEndTest(kLongTimeoutMs), |
2093 use_rtx_(use_rtx), | 2088 use_rtx_(use_rtx), |
2094 use_red_(use_red), | 2089 use_red_(use_red), |
2095 screenshare_(screenshare), | 2090 screenshare_(screenshare), |
2096 // This test uses NACK, so to send FEC we can't use a fake encoder. | 2091 // This test uses NACK, so to send FEC we can't use a fake encoder. |
2097 vp8_encoder_( | 2092 vp8_encoder_(use_red ? VP8Encoder::Create() : nullptr), |
2098 use_red ? VideoEncoder::Create(VideoEncoder::EncoderType::kVp8) | |
2099 : nullptr), | |
2100 sender_call_(nullptr), | 2093 sender_call_(nullptr), |
2101 receiver_call_(nullptr), | 2094 receiver_call_(nullptr), |
2102 start_runtime_ms_(-1), | 2095 start_runtime_ms_(-1), |
2103 num_frames_received_(0) {} | 2096 num_frames_received_(0) {} |
2104 | 2097 |
2105 private: | 2098 private: |
2106 void OnFrame(const VideoFrame& video_frame) override { | 2099 void OnFrame(const VideoFrame& video_frame) override { |
2107 // The RTT is needed to estimate |ntp_time_ms| which is used by | 2100 // The RTT is needed to estimate |ntp_time_ms| which is used by |
2108 // end-to-end delay stats. Therefore, start counting received frames once | 2101 // end-to-end delay stats. Therefore, start counting received frames once |
2109 // |ntp_time_ms| is valid. | 2102 // |ntp_time_ms| is valid. |
(...skipping 1756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3866 void PerformTest() override { | 3859 void PerformTest() override { |
3867 fixture_->LogSend(true); | 3860 fixture_->LogSend(true); |
3868 fixture_->LogReceive(true); | 3861 fixture_->LogReceive(true); |
3869 ASSERT_TRUE(Wait()) << "Timed out while waiting for frame logging."; | 3862 ASSERT_TRUE(Wait()) << "Timed out while waiting for frame logging."; |
3870 } | 3863 } |
3871 | 3864 |
3872 void ModifyVideoConfigs( | 3865 void ModifyVideoConfigs( |
3873 VideoSendStream::Config* send_config, | 3866 VideoSendStream::Config* send_config, |
3874 std::vector<VideoReceiveStream::Config>* receive_configs, | 3867 std::vector<VideoReceiveStream::Config>* receive_configs, |
3875 VideoEncoderConfig* encoder_config) override { | 3868 VideoEncoderConfig* encoder_config) override { |
3876 encoder_.reset(VideoEncoder::Create(VideoEncoder::kVp8)); | 3869 encoder_.reset(VP8Encoder::Create()); |
3877 decoder_.reset(VP8Decoder::Create()); | 3870 decoder_.reset(VP8Decoder::Create()); |
3878 | 3871 |
3879 send_config->post_encode_callback = this; | 3872 send_config->post_encode_callback = this; |
3880 send_config->encoder_settings.payload_name = "VP8"; | 3873 send_config->encoder_settings.payload_name = "VP8"; |
3881 send_config->encoder_settings.encoder = encoder_.get(); | 3874 send_config->encoder_settings.encoder = encoder_.get(); |
3882 | 3875 |
3883 (*receive_configs)[0].decoders.resize(1); | 3876 (*receive_configs)[0].decoders.resize(1); |
3884 (*receive_configs)[0].decoders[0].payload_type = | 3877 (*receive_configs)[0].decoders[0].payload_type = |
3885 send_config->encoder_settings.payload_type; | 3878 send_config->encoder_settings.payload_type; |
3886 (*receive_configs)[0].decoders[0].payload_name = | 3879 (*receive_configs)[0].decoders[0].payload_name = |
(...skipping 22 matching lines...) Expand all Loading... |
3909 std::unique_ptr<VideoEncoder> encoder_; | 3902 std::unique_ptr<VideoEncoder> encoder_; |
3910 std::unique_ptr<VideoDecoder> decoder_; | 3903 std::unique_ptr<VideoDecoder> decoder_; |
3911 rtc::CriticalSection crit_; | 3904 rtc::CriticalSection crit_; |
3912 int recorded_frames_ GUARDED_BY(crit_); | 3905 int recorded_frames_ GUARDED_BY(crit_); |
3913 } test(this); | 3906 } test(this); |
3914 | 3907 |
3915 RunBaseTest(&test); | 3908 RunBaseTest(&test); |
3916 } | 3909 } |
3917 | 3910 |
3918 } // namespace webrtc | 3911 } // namespace webrtc |
OLD | NEW |