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

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

Issue 2474993002: Pass selected cricket::VideoCodec down to internal H264 encoder (Closed)
Patch Set: Fix. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include <algorithm> 10 #include <algorithm>
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
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",
357 VideoEncoder::Create(VideoEncoder::kVp8), 357 VideoEncoder::Create(cricket::VideoCodec("VP8")),
358 VP8Decoder::Create()); 358 VP8Decoder::Create());
359 RunBaseTest(&test); 359 RunBaseTest(&test);
360 } 360 }
361 361
362 #if !defined(RTC_DISABLE_VP9) 362 #if !defined(RTC_DISABLE_VP9)
363 TEST_F(EndToEndTest, SendsAndReceivesVP9) { 363 TEST_F(EndToEndTest, SendsAndReceivesVP9) {
364 CodecObserver test(500, kVideoRotation_0, "VP9", 364 CodecObserver test(500, kVideoRotation_0, "VP9",
365 VideoEncoder::Create(VideoEncoder::kVp9), 365 VideoEncoder::Create(cricket::VideoCodec("VP9")),
366 VP9Decoder::Create()); 366 VP9Decoder::Create());
367 RunBaseTest(&test); 367 RunBaseTest(&test);
368 } 368 }
369 369
370 TEST_F(EndToEndTest, SendsAndReceivesVP9VideoRotation90) { 370 TEST_F(EndToEndTest, SendsAndReceivesVP9VideoRotation90) {
371 CodecObserver test(5, kVideoRotation_90, "VP9", 371 CodecObserver test(5, kVideoRotation_90, "VP9",
372 VideoEncoder::Create(VideoEncoder::kVp9), 372 VideoEncoder::Create(cricket::VideoCodec("VP9")),
373 VP9Decoder::Create()); 373 VP9Decoder::Create());
374 RunBaseTest(&test); 374 RunBaseTest(&test);
375 } 375 }
376 #endif // !defined(RTC_DISABLE_VP9) 376 #endif // !defined(RTC_DISABLE_VP9)
377 377
378 #if defined(WEBRTC_END_TO_END_H264_TESTS) 378 #if defined(WEBRTC_END_TO_END_H264_TESTS)
379 379
380 TEST_F(EndToEndTest, SendsAndReceivesH264) { 380 TEST_F(EndToEndTest, SendsAndReceivesH264) {
381 CodecObserver test(500, kVideoRotation_0, "H264", 381 CodecObserver test(500, kVideoRotation_0, "H264",
382 VideoEncoder::Create(VideoEncoder::kH264), 382 VideoEncoder::Create(VideoEncoder::kH264),
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 670
671 TEST_F(EndToEndTest, ReceivedUlpfecPacketsNotNacked) { 671 TEST_F(EndToEndTest, ReceivedUlpfecPacketsNotNacked) {
672 class UlpfecNackObserver : public test::EndToEndTest { 672 class UlpfecNackObserver : public test::EndToEndTest {
673 public: 673 public:
674 UlpfecNackObserver() 674 UlpfecNackObserver()
675 : EndToEndTest(kDefaultTimeoutMs), 675 : EndToEndTest(kDefaultTimeoutMs),
676 state_(kFirstPacket), 676 state_(kFirstPacket),
677 ulpfec_sequence_number_(0), 677 ulpfec_sequence_number_(0),
678 has_last_sequence_number_(false), 678 has_last_sequence_number_(false),
679 last_sequence_number_(0), 679 last_sequence_number_(0),
680 encoder_(VideoEncoder::Create(VideoEncoder::EncoderType::kVp8)), 680 encoder_(VideoEncoder::Create(cricket::VideoCodec("VP8"))),
681 decoder_(VP8Decoder::Create()) {} 681 decoder_(VP8Decoder::Create()) {}
682 682
683 private: 683 private:
684 Action OnSendRtp(const uint8_t* packet, size_t length) override { 684 Action OnSendRtp(const uint8_t* packet, size_t length) override {
685 rtc::CritScope lock_(&crit_); 685 rtc::CritScope lock_(&crit_);
686 RTPHeader header; 686 RTPHeader header;
687 EXPECT_TRUE(parser_->Parse(packet, length, &header)); 687 EXPECT_TRUE(parser_->Parse(packet, length, &header));
688 688
689 int encapsulated_payload_type = -1; 689 int encapsulated_payload_type = -1;
690 if (header.payloadType == kRedPayloadType) { 690 if (header.payloadType == kRedPayloadType) {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 static const int kDroppedFrameNumber = 10; 838 static const int kDroppedFrameNumber = 10;
839 class RetransmissionObserver : public test::EndToEndTest, 839 class RetransmissionObserver : public test::EndToEndTest,
840 public I420FrameCallback { 840 public I420FrameCallback {
841 public: 841 public:
842 RetransmissionObserver(bool enable_rtx, bool enable_red) 842 RetransmissionObserver(bool enable_rtx, bool enable_red)
843 : EndToEndTest(kDefaultTimeoutMs), 843 : EndToEndTest(kDefaultTimeoutMs),
844 payload_type_(GetPayloadType(false, enable_red)), 844 payload_type_(GetPayloadType(false, enable_red)),
845 retransmission_ssrc_(enable_rtx ? kSendRtxSsrcs[0] 845 retransmission_ssrc_(enable_rtx ? kSendRtxSsrcs[0]
846 : kVideoSendSsrcs[0]), 846 : kVideoSendSsrcs[0]),
847 retransmission_payload_type_(GetPayloadType(enable_rtx, enable_red)), 847 retransmission_payload_type_(GetPayloadType(enable_rtx, enable_red)),
848 encoder_(VideoEncoder::Create(VideoEncoder::EncoderType::kVp8)), 848 encoder_(VideoEncoder::Create(cricket::VideoCodec("VP8"))),
849 marker_bits_observed_(0), 849 marker_bits_observed_(0),
850 retransmitted_timestamp_(0) {} 850 retransmitted_timestamp_(0) {}
851 851
852 private: 852 private:
853 Action OnSendRtp(const uint8_t* packet, size_t length) override { 853 Action OnSendRtp(const uint8_t* packet, size_t length) override {
854 rtc::CritScope lock(&crit_); 854 rtc::CritScope lock(&crit_);
855 RTPHeader header; 855 RTPHeader header;
856 EXPECT_TRUE(parser_->Parse(packet, length, &header)); 856 EXPECT_TRUE(parser_->Parse(packet, length, &header));
857 857
858 // Ignore padding-only packets over RTX. 858 // Ignore padding-only packets over RTX.
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
1237 std::unique_ptr<Call> receiver_call(Call::Create(config)); 1237 std::unique_ptr<Call> receiver_call(Call::Create(config));
1238 std::unique_ptr<test::DirectTransport> sender_transport( 1238 std::unique_ptr<test::DirectTransport> sender_transport(
1239 CreateSendTransport(sender_call.get())); 1239 CreateSendTransport(sender_call.get()));
1240 std::unique_ptr<test::DirectTransport> receiver_transport( 1240 std::unique_ptr<test::DirectTransport> receiver_transport(
1241 CreateReceiveTransport(receiver_call.get())); 1241 CreateReceiveTransport(receiver_call.get()));
1242 sender_transport->SetReceiver(receiver_call->Receiver()); 1242 sender_transport->SetReceiver(receiver_call->Receiver());
1243 receiver_transport->SetReceiver(sender_call->Receiver()); 1243 receiver_transport->SetReceiver(sender_call->Receiver());
1244 1244
1245 std::unique_ptr<VideoEncoder> encoders[kNumStreams]; 1245 std::unique_ptr<VideoEncoder> encoders[kNumStreams];
1246 for (size_t i = 0; i < kNumStreams; ++i) 1246 for (size_t i = 0; i < kNumStreams; ++i)
1247 encoders[i].reset(VideoEncoder::Create(VideoEncoder::kVp8)); 1247 encoders[i].reset(VideoEncoder::Create(cricket::VideoCodec("VP8")));
1248 1248
1249 VideoSendStream* send_streams[kNumStreams]; 1249 VideoSendStream* send_streams[kNumStreams];
1250 VideoReceiveStream* receive_streams[kNumStreams]; 1250 VideoReceiveStream* receive_streams[kNumStreams];
1251 1251
1252 test::FrameGeneratorCapturer* frame_generators[kNumStreams]; 1252 test::FrameGeneratorCapturer* frame_generators[kNumStreams];
1253 std::vector<std::unique_ptr<VideoDecoder>> allocated_decoders; 1253 std::vector<std::unique_ptr<VideoDecoder>> allocated_decoders;
1254 for (size_t i = 0; i < kNumStreams; ++i) { 1254 for (size_t i = 0; i < kNumStreams; ++i) {
1255 uint32_t ssrc = codec_settings[i].ssrc; 1255 uint32_t ssrc = codec_settings[i].ssrc;
1256 int width = codec_settings[i].width; 1256 int width = codec_settings[i].width;
1257 int height = codec_settings[i].height; 1257 int height = codec_settings[i].height;
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after
2088 class StatsObserver : public test::EndToEndTest, 2088 class StatsObserver : public test::EndToEndTest,
2089 public rtc::VideoSinkInterface<VideoFrame> { 2089 public rtc::VideoSinkInterface<VideoFrame> {
2090 public: 2090 public:
2091 StatsObserver(bool use_rtx, bool use_red, bool screenshare) 2091 StatsObserver(bool use_rtx, bool use_red, bool screenshare)
2092 : EndToEndTest(kLongTimeoutMs), 2092 : EndToEndTest(kLongTimeoutMs),
2093 use_rtx_(use_rtx), 2093 use_rtx_(use_rtx),
2094 use_red_(use_red), 2094 use_red_(use_red),
2095 screenshare_(screenshare), 2095 screenshare_(screenshare),
2096 // This test uses NACK, so to send FEC we can't use a fake encoder. 2096 // This test uses NACK, so to send FEC we can't use a fake encoder.
2097 vp8_encoder_( 2097 vp8_encoder_(
2098 use_red ? VideoEncoder::Create(VideoEncoder::EncoderType::kVp8) 2098 use_red ? VideoEncoder::Create(cricket::VideoCodec("VP8"))
2099 : nullptr), 2099 : nullptr),
2100 sender_call_(nullptr), 2100 sender_call_(nullptr),
2101 receiver_call_(nullptr), 2101 receiver_call_(nullptr),
2102 start_runtime_ms_(-1), 2102 start_runtime_ms_(-1),
2103 num_frames_received_(0) {} 2103 num_frames_received_(0) {}
2104 2104
2105 private: 2105 private:
2106 void OnFrame(const VideoFrame& video_frame) override { 2106 void OnFrame(const VideoFrame& video_frame) override {
2107 // The RTT is needed to estimate |ntp_time_ms| which is used by 2107 // 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 2108 // end-to-end delay stats. Therefore, start counting received frames once
(...skipping 1757 matching lines...) Expand 10 before | Expand all | Expand 10 after
3866 void PerformTest() override { 3866 void PerformTest() override {
3867 fixture_->LogSend(true); 3867 fixture_->LogSend(true);
3868 fixture_->LogReceive(true); 3868 fixture_->LogReceive(true);
3869 ASSERT_TRUE(Wait()) << "Timed out while waiting for frame logging."; 3869 ASSERT_TRUE(Wait()) << "Timed out while waiting for frame logging.";
3870 } 3870 }
3871 3871
3872 void ModifyVideoConfigs( 3872 void ModifyVideoConfigs(
3873 VideoSendStream::Config* send_config, 3873 VideoSendStream::Config* send_config,
3874 std::vector<VideoReceiveStream::Config>* receive_configs, 3874 std::vector<VideoReceiveStream::Config>* receive_configs,
3875 VideoEncoderConfig* encoder_config) override { 3875 VideoEncoderConfig* encoder_config) override {
3876 encoder_.reset(VideoEncoder::Create(VideoEncoder::kVp8)); 3876 encoder_.reset(VideoEncoder::Create(cricket::VideoCodec("VP8")));
3877 decoder_.reset(VP8Decoder::Create()); 3877 decoder_.reset(VP8Decoder::Create());
3878 3878
3879 send_config->post_encode_callback = this; 3879 send_config->post_encode_callback = this;
3880 send_config->encoder_settings.payload_name = "VP8"; 3880 send_config->encoder_settings.payload_name = "VP8";
3881 send_config->encoder_settings.encoder = encoder_.get(); 3881 send_config->encoder_settings.encoder = encoder_.get();
3882 3882
3883 (*receive_configs)[0].decoders.resize(1); 3883 (*receive_configs)[0].decoders.resize(1);
3884 (*receive_configs)[0].decoders[0].payload_type = 3884 (*receive_configs)[0].decoders[0].payload_type =
3885 send_config->encoder_settings.payload_type; 3885 send_config->encoder_settings.payload_type;
3886 (*receive_configs)[0].decoders[0].payload_name = 3886 (*receive_configs)[0].decoders[0].payload_name =
(...skipping 22 matching lines...) Expand all
3909 std::unique_ptr<VideoEncoder> encoder_; 3909 std::unique_ptr<VideoEncoder> encoder_;
3910 std::unique_ptr<VideoDecoder> decoder_; 3910 std::unique_ptr<VideoDecoder> decoder_;
3911 rtc::CriticalSection crit_; 3911 rtc::CriticalSection crit_;
3912 int recorded_frames_ GUARDED_BY(crit_); 3912 int recorded_frames_ GUARDED_BY(crit_);
3913 } test(this); 3913 } test(this);
3914 3914
3915 RunBaseTest(&test); 3915 RunBaseTest(&test);
3916 } 3916 }
3917 3917
3918 } // namespace webrtc 3918 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698