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

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

Issue 2513633002: Revert of Stop using hardcoded payload types for video codecs (Closed)
Patch Set: 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
« no previous file with comments | « webrtc/video/BUILD.gn ('k') | webrtc/video/video_encoder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « webrtc/video/BUILD.gn ('k') | webrtc/video/video_encoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698