| 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", VP8Encoder::Create(), | 356 CodecObserver test(5, kVideoRotation_90, "VP8", |
| 357 VideoEncoder::Create(VideoEncoder::kVp8), |
| 357 VP8Decoder::Create()); | 358 VP8Decoder::Create()); |
| 358 RunBaseTest(&test); | 359 RunBaseTest(&test); |
| 359 } | 360 } |
| 360 | 361 |
| 361 #if !defined(RTC_DISABLE_VP9) | 362 #if !defined(RTC_DISABLE_VP9) |
| 362 TEST_F(EndToEndTest, SendsAndReceivesVP9) { | 363 TEST_F(EndToEndTest, SendsAndReceivesVP9) { |
| 363 CodecObserver test(500, kVideoRotation_0, "VP9", VP9Encoder::Create(), | 364 CodecObserver test(500, kVideoRotation_0, "VP9", |
| 365 VideoEncoder::Create(VideoEncoder::kVp9), |
| 364 VP9Decoder::Create()); | 366 VP9Decoder::Create()); |
| 365 RunBaseTest(&test); | 367 RunBaseTest(&test); |
| 366 } | 368 } |
| 367 | 369 |
| 368 TEST_F(EndToEndTest, SendsAndReceivesVP9VideoRotation90) { | 370 TEST_F(EndToEndTest, SendsAndReceivesVP9VideoRotation90) { |
| 369 CodecObserver test(5, kVideoRotation_90, "VP9", VP9Encoder::Create(), | 371 CodecObserver test(5, kVideoRotation_90, "VP9", |
| 372 VideoEncoder::Create(VideoEncoder::kVp9), |
| 370 VP9Decoder::Create()); | 373 VP9Decoder::Create()); |
| 371 RunBaseTest(&test); | 374 RunBaseTest(&test); |
| 372 } | 375 } |
| 373 #endif // !defined(RTC_DISABLE_VP9) | 376 #endif // !defined(RTC_DISABLE_VP9) |
| 374 | 377 |
| 375 #if defined(WEBRTC_USE_H264) | 378 #if defined(WEBRTC_USE_H264) |
| 376 TEST_F(EndToEndTest, SendsAndReceivesH264) { | 379 TEST_F(EndToEndTest, SendsAndReceivesH264) { |
| 377 CodecObserver test(500, kVideoRotation_0, "H264", H264Encoder::Create(), | 380 CodecObserver test(500, kVideoRotation_0, "H264", |
| 381 VideoEncoder::Create(VideoEncoder::kH264), |
| 378 H264Decoder::Create()); | 382 H264Decoder::Create()); |
| 379 RunBaseTest(&test); | 383 RunBaseTest(&test); |
| 380 } | 384 } |
| 381 | 385 |
| 382 TEST_F(EndToEndTest, SendsAndReceivesH264VideoRotation90) { | 386 TEST_F(EndToEndTest, SendsAndReceivesH264VideoRotation90) { |
| 383 CodecObserver test(5, kVideoRotation_90, "H264", H264Encoder::Create(), | 387 CodecObserver test(5, kVideoRotation_90, "H264", |
| 388 VideoEncoder::Create(VideoEncoder::kH264), |
| 384 H264Decoder::Create()); | 389 H264Decoder::Create()); |
| 385 RunBaseTest(&test); | 390 RunBaseTest(&test); |
| 386 } | 391 } |
| 387 #endif // defined(WEBRTC_USE_H264) | 392 #endif // defined(WEBRTC_USE_H264) |
| 388 | 393 |
| 389 TEST_F(EndToEndTest, ReceiverUsesLocalSsrc) { | 394 TEST_F(EndToEndTest, ReceiverUsesLocalSsrc) { |
| 390 class SyncRtcpObserver : public test::EndToEndTest { | 395 class SyncRtcpObserver : public test::EndToEndTest { |
| 391 public: | 396 public: |
| 392 SyncRtcpObserver() : EndToEndTest(kDefaultTimeoutMs) {} | 397 SyncRtcpObserver() : EndToEndTest(kDefaultTimeoutMs) {} |
| 393 | 398 |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 753 | 758 |
| 754 TEST_F(EndToEndTest, ReceivedUlpfecPacketsNotNacked) { | 759 TEST_F(EndToEndTest, ReceivedUlpfecPacketsNotNacked) { |
| 755 class UlpfecNackObserver : public test::EndToEndTest { | 760 class UlpfecNackObserver : public test::EndToEndTest { |
| 756 public: | 761 public: |
| 757 UlpfecNackObserver() | 762 UlpfecNackObserver() |
| 758 : EndToEndTest(kDefaultTimeoutMs), | 763 : EndToEndTest(kDefaultTimeoutMs), |
| 759 state_(kFirstPacket), | 764 state_(kFirstPacket), |
| 760 ulpfec_sequence_number_(0), | 765 ulpfec_sequence_number_(0), |
| 761 has_last_sequence_number_(false), | 766 has_last_sequence_number_(false), |
| 762 last_sequence_number_(0), | 767 last_sequence_number_(0), |
| 763 encoder_(VP8Encoder::Create()), | 768 encoder_(VideoEncoder::Create(VideoEncoder::EncoderType::kVp8)), |
| 764 decoder_(VP8Decoder::Create()) {} | 769 decoder_(VP8Decoder::Create()) {} |
| 765 | 770 |
| 766 private: | 771 private: |
| 767 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 772 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
| 768 rtc::CritScope lock_(&crit_); | 773 rtc::CritScope lock_(&crit_); |
| 769 RTPHeader header; | 774 RTPHeader header; |
| 770 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 775 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
| 771 | 776 |
| 772 int encapsulated_payload_type = -1; | 777 int encapsulated_payload_type = -1; |
| 773 if (header.payloadType == kRedPayloadType) { | 778 if (header.payloadType == kRedPayloadType) { |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 static const int kDroppedFrameNumber = 10; | 926 static const int kDroppedFrameNumber = 10; |
| 922 class RetransmissionObserver : public test::EndToEndTest, | 927 class RetransmissionObserver : public test::EndToEndTest, |
| 923 public I420FrameCallback { | 928 public I420FrameCallback { |
| 924 public: | 929 public: |
| 925 RetransmissionObserver(bool enable_rtx, bool enable_red) | 930 RetransmissionObserver(bool enable_rtx, bool enable_red) |
| 926 : EndToEndTest(kDefaultTimeoutMs), | 931 : EndToEndTest(kDefaultTimeoutMs), |
| 927 payload_type_(GetPayloadType(false, enable_red)), | 932 payload_type_(GetPayloadType(false, enable_red)), |
| 928 retransmission_ssrc_(enable_rtx ? kSendRtxSsrcs[0] | 933 retransmission_ssrc_(enable_rtx ? kSendRtxSsrcs[0] |
| 929 : kVideoSendSsrcs[0]), | 934 : kVideoSendSsrcs[0]), |
| 930 retransmission_payload_type_(GetPayloadType(enable_rtx, enable_red)), | 935 retransmission_payload_type_(GetPayloadType(enable_rtx, enable_red)), |
| 931 encoder_(VP8Encoder::Create()), | 936 encoder_(VideoEncoder::Create(VideoEncoder::EncoderType::kVp8)), |
| 932 marker_bits_observed_(0), | 937 marker_bits_observed_(0), |
| 933 retransmitted_timestamp_(0) {} | 938 retransmitted_timestamp_(0) {} |
| 934 | 939 |
| 935 private: | 940 private: |
| 936 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 941 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
| 937 rtc::CritScope lock(&crit_); | 942 rtc::CritScope lock(&crit_); |
| 938 RTPHeader header; | 943 RTPHeader header; |
| 939 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 944 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
| 940 | 945 |
| 941 // Ignore padding-only packets over RTX. | 946 // Ignore padding-only packets over RTX. |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1320 std::unique_ptr<Call> receiver_call(Call::Create(config)); | 1325 std::unique_ptr<Call> receiver_call(Call::Create(config)); |
| 1321 std::unique_ptr<test::DirectTransport> sender_transport( | 1326 std::unique_ptr<test::DirectTransport> sender_transport( |
| 1322 CreateSendTransport(sender_call.get())); | 1327 CreateSendTransport(sender_call.get())); |
| 1323 std::unique_ptr<test::DirectTransport> receiver_transport( | 1328 std::unique_ptr<test::DirectTransport> receiver_transport( |
| 1324 CreateReceiveTransport(receiver_call.get())); | 1329 CreateReceiveTransport(receiver_call.get())); |
| 1325 sender_transport->SetReceiver(receiver_call->Receiver()); | 1330 sender_transport->SetReceiver(receiver_call->Receiver()); |
| 1326 receiver_transport->SetReceiver(sender_call->Receiver()); | 1331 receiver_transport->SetReceiver(sender_call->Receiver()); |
| 1327 | 1332 |
| 1328 std::unique_ptr<VideoEncoder> encoders[kNumStreams]; | 1333 std::unique_ptr<VideoEncoder> encoders[kNumStreams]; |
| 1329 for (size_t i = 0; i < kNumStreams; ++i) | 1334 for (size_t i = 0; i < kNumStreams; ++i) |
| 1330 encoders[i].reset(VP8Encoder::Create()); | 1335 encoders[i].reset(VideoEncoder::Create(VideoEncoder::kVp8)); |
| 1331 | 1336 |
| 1332 VideoSendStream* send_streams[kNumStreams]; | 1337 VideoSendStream* send_streams[kNumStreams]; |
| 1333 VideoReceiveStream* receive_streams[kNumStreams]; | 1338 VideoReceiveStream* receive_streams[kNumStreams]; |
| 1334 | 1339 |
| 1335 test::FrameGeneratorCapturer* frame_generators[kNumStreams]; | 1340 test::FrameGeneratorCapturer* frame_generators[kNumStreams]; |
| 1336 std::vector<std::unique_ptr<VideoDecoder>> allocated_decoders; | 1341 std::vector<std::unique_ptr<VideoDecoder>> allocated_decoders; |
| 1337 for (size_t i = 0; i < kNumStreams; ++i) { | 1342 for (size_t i = 0; i < kNumStreams; ++i) { |
| 1338 uint32_t ssrc = codec_settings[i].ssrc; | 1343 uint32_t ssrc = codec_settings[i].ssrc; |
| 1339 int width = codec_settings[i].width; | 1344 int width = codec_settings[i].width; |
| 1340 int height = codec_settings[i].height; | 1345 int height = codec_settings[i].height; |
| (...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2170 bool screenshare) { | 2175 bool screenshare) { |
| 2171 class StatsObserver : public test::EndToEndTest, | 2176 class StatsObserver : public test::EndToEndTest, |
| 2172 public rtc::VideoSinkInterface<VideoFrame> { | 2177 public rtc::VideoSinkInterface<VideoFrame> { |
| 2173 public: | 2178 public: |
| 2174 StatsObserver(bool use_rtx, bool use_red, bool screenshare) | 2179 StatsObserver(bool use_rtx, bool use_red, bool screenshare) |
| 2175 : EndToEndTest(kLongTimeoutMs), | 2180 : EndToEndTest(kLongTimeoutMs), |
| 2176 use_rtx_(use_rtx), | 2181 use_rtx_(use_rtx), |
| 2177 use_red_(use_red), | 2182 use_red_(use_red), |
| 2178 screenshare_(screenshare), | 2183 screenshare_(screenshare), |
| 2179 // This test uses NACK, so to send FEC we can't use a fake encoder. | 2184 // This test uses NACK, so to send FEC we can't use a fake encoder. |
| 2180 vp8_encoder_(use_red ? VP8Encoder::Create() : nullptr), | 2185 vp8_encoder_( |
| 2186 use_red ? VideoEncoder::Create(VideoEncoder::EncoderType::kVp8) |
| 2187 : nullptr), |
| 2181 sender_call_(nullptr), | 2188 sender_call_(nullptr), |
| 2182 receiver_call_(nullptr), | 2189 receiver_call_(nullptr), |
| 2183 start_runtime_ms_(-1), | 2190 start_runtime_ms_(-1), |
| 2184 num_frames_received_(0) {} | 2191 num_frames_received_(0) {} |
| 2185 | 2192 |
| 2186 private: | 2193 private: |
| 2187 void OnFrame(const VideoFrame& video_frame) override { | 2194 void OnFrame(const VideoFrame& video_frame) override { |
| 2188 // The RTT is needed to estimate |ntp_time_ms| which is used by | 2195 // The RTT is needed to estimate |ntp_time_ms| which is used by |
| 2189 // end-to-end delay stats. Therefore, start counting received frames once | 2196 // end-to-end delay stats. Therefore, start counting received frames once |
| 2190 // |ntp_time_ms| is valid. | 2197 // |ntp_time_ms| is valid. |
| (...skipping 1770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3961 void PerformTest() override { | 3968 void PerformTest() override { |
| 3962 fixture_->LogSend(true); | 3969 fixture_->LogSend(true); |
| 3963 fixture_->LogReceive(true); | 3970 fixture_->LogReceive(true); |
| 3964 ASSERT_TRUE(Wait()) << "Timed out while waiting for frame logging."; | 3971 ASSERT_TRUE(Wait()) << "Timed out while waiting for frame logging."; |
| 3965 } | 3972 } |
| 3966 | 3973 |
| 3967 void ModifyVideoConfigs( | 3974 void ModifyVideoConfigs( |
| 3968 VideoSendStream::Config* send_config, | 3975 VideoSendStream::Config* send_config, |
| 3969 std::vector<VideoReceiveStream::Config>* receive_configs, | 3976 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 3970 VideoEncoderConfig* encoder_config) override { | 3977 VideoEncoderConfig* encoder_config) override { |
| 3971 encoder_.reset(VP8Encoder::Create()); | 3978 encoder_.reset(VideoEncoder::Create(VideoEncoder::kVp8)); |
| 3972 decoder_.reset(VP8Decoder::Create()); | 3979 decoder_.reset(VP8Decoder::Create()); |
| 3973 | 3980 |
| 3974 send_config->post_encode_callback = this; | 3981 send_config->post_encode_callback = this; |
| 3975 send_config->encoder_settings.payload_name = "VP8"; | 3982 send_config->encoder_settings.payload_name = "VP8"; |
| 3976 send_config->encoder_settings.encoder = encoder_.get(); | 3983 send_config->encoder_settings.encoder = encoder_.get(); |
| 3977 | 3984 |
| 3978 (*receive_configs)[0].decoders.resize(1); | 3985 (*receive_configs)[0].decoders.resize(1); |
| 3979 (*receive_configs)[0].decoders[0].payload_type = | 3986 (*receive_configs)[0].decoders[0].payload_type = |
| 3980 send_config->encoder_settings.payload_type; | 3987 send_config->encoder_settings.payload_type; |
| 3981 (*receive_configs)[0].decoders[0].payload_name = | 3988 (*receive_configs)[0].decoders[0].payload_name = |
| (...skipping 22 matching lines...) Expand all Loading... |
| 4004 std::unique_ptr<VideoEncoder> encoder_; | 4011 std::unique_ptr<VideoEncoder> encoder_; |
| 4005 std::unique_ptr<VideoDecoder> decoder_; | 4012 std::unique_ptr<VideoDecoder> decoder_; |
| 4006 rtc::CriticalSection crit_; | 4013 rtc::CriticalSection crit_; |
| 4007 int recorded_frames_ GUARDED_BY(crit_); | 4014 int recorded_frames_ GUARDED_BY(crit_); |
| 4008 } test(this); | 4015 } test(this); |
| 4009 | 4016 |
| 4010 RunBaseTest(&test); | 4017 RunBaseTest(&test); |
| 4011 } | 4018 } |
| 4012 | 4019 |
| 4013 } // namespace webrtc | 4020 } // namespace webrtc |
| OLD | NEW |