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

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

Issue 2449053002: Rename Fec to Ulpfec in VideoSendStreamTest. (Closed)
Patch Set: Rebase. 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 | « no previous file | no next file » | 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> // max 10 #include <algorithm> // max
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 return true; 304 return true;
305 } 305 }
306 306
307 RtcpStatistics stats_; 307 RtcpStatistics stats_;
308 }; 308 };
309 309
310 std::unique_ptr<LossyStatistician> lossy_stats_; 310 std::unique_ptr<LossyStatistician> lossy_stats_;
311 StatisticianMap stats_map_; 311 StatisticianMap stats_map_;
312 }; 312 };
313 313
314 class FecObserver : public test::EndToEndTest { 314 class UlpfecObserver : public test::EndToEndTest {
315 public: 315 public:
316 FecObserver(bool header_extensions_enabled, 316 UlpfecObserver(bool header_extensions_enabled,
317 bool use_nack, 317 bool use_nack,
318 bool expect_red, 318 bool expect_red,
319 bool expect_fec, 319 bool expect_ulpfec,
320 const std::string& codec) 320 const std::string& codec)
321 : EndToEndTest(VideoSendStreamTest::kDefaultTimeoutMs), 321 : EndToEndTest(VideoSendStreamTest::kDefaultTimeoutMs),
322 payload_name_(codec), 322 payload_name_(codec),
323 use_nack_(use_nack), 323 use_nack_(use_nack),
324 expect_red_(expect_red), 324 expect_red_(expect_red),
325 expect_fec_(expect_fec), 325 expect_ulpfec_(expect_ulpfec),
326 send_count_(0), 326 send_count_(0),
327 received_media_(false), 327 received_media_(false),
328 received_fec_(false), 328 received_fec_(false),
329 header_extensions_enabled_(header_extensions_enabled) { 329 header_extensions_enabled_(header_extensions_enabled) {
330 if (codec == "H264") { 330 if (codec == "H264") {
331 encoder_.reset(new test::FakeH264Encoder(Clock::GetRealTimeClock())); 331 encoder_.reset(new test::FakeH264Encoder(Clock::GetRealTimeClock()));
332 } else if (codec == "VP8") { 332 } else if (codec == "VP8") {
333 encoder_.reset(VideoEncoder::Create(VideoEncoder::EncoderType::kVp8)); 333 encoder_.reset(VideoEncoder::Create(VideoEncoder::EncoderType::kVp8));
334 } else if (codec == "VP9") { 334 } else if (codec == "VP9") {
335 encoder_.reset(VideoEncoder::Create(VideoEncoder::EncoderType::kVp9)); 335 encoder_.reset(VideoEncoder::Create(VideoEncoder::EncoderType::kVp9));
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 } 378 }
379 EXPECT_TRUE(header.extension.hasTransportSequenceNumber); 379 EXPECT_TRUE(header.extension.hasTransportSequenceNumber);
380 uint16_t seq_num_diff = header.extension.transportSequenceNumber - 380 uint16_t seq_num_diff = header.extension.transportSequenceNumber -
381 prev_header_.extension.transportSequenceNumber; 381 prev_header_.extension.transportSequenceNumber;
382 EXPECT_EQ(1, seq_num_diff); 382 EXPECT_EQ(1, seq_num_diff);
383 } 383 }
384 384
385 if (encapsulated_payload_type != -1) { 385 if (encapsulated_payload_type != -1) {
386 if (encapsulated_payload_type == 386 if (encapsulated_payload_type ==
387 VideoSendStreamTest::kUlpfecPayloadType) { 387 VideoSendStreamTest::kUlpfecPayloadType) {
388 EXPECT_TRUE(expect_fec_); 388 EXPECT_TRUE(expect_ulpfec_);
389 received_fec_ = true; 389 received_fec_ = true;
390 } else { 390 } else {
391 received_media_ = true; 391 received_media_ = true;
392 } 392 }
393 } 393 }
394 394
395 if (send_count_ > 100 && received_media_) { 395 if (send_count_ > 100 && received_media_) {
396 if (received_fec_ || !expect_fec_) 396 if (received_fec_ || !expect_ulpfec_)
397 observation_complete_.Set(); 397 observation_complete_.Set();
398 } 398 }
399 399
400 prev_header_ = header; 400 prev_header_ = header;
401 401
402 return SEND_PACKET; 402 return SEND_PACKET;
403 } 403 }
404 404
405 test::PacketTransport* CreateSendTransport(Call* sender_call) override { 405 test::PacketTransport* CreateSendTransport(Call* sender_call) override {
406 // At low RTT (< kLowRttNackMs) -> NACK only, no FEC. 406 // At low RTT (< kLowRttNackMs) -> NACK only, no FEC.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 446
447 void PerformTest() override { 447 void PerformTest() override {
448 EXPECT_TRUE(Wait()) << "Timed out waiting for FEC and media packets."; 448 EXPECT_TRUE(Wait()) << "Timed out waiting for FEC and media packets.";
449 } 449 }
450 450
451 std::unique_ptr<internal::TransportAdapter> transport_adapter_; 451 std::unique_ptr<internal::TransportAdapter> transport_adapter_;
452 std::unique_ptr<VideoEncoder> encoder_; 452 std::unique_ptr<VideoEncoder> encoder_;
453 const std::string payload_name_; 453 const std::string payload_name_;
454 const bool use_nack_; 454 const bool use_nack_;
455 const bool expect_red_; 455 const bool expect_red_;
456 const bool expect_fec_; 456 const bool expect_ulpfec_;
457 int send_count_; 457 int send_count_;
458 bool received_media_; 458 bool received_media_;
459 bool received_fec_; 459 bool received_fec_;
460 bool header_extensions_enabled_; 460 bool header_extensions_enabled_;
461 RTPHeader prev_header_; 461 RTPHeader prev_header_;
462 }; 462 };
463 463
464 TEST_F(VideoSendStreamTest, SupportsFecWithExtensions) { 464 TEST_F(VideoSendStreamTest, SupportsUlpfecWithExtensions) {
465 FecObserver test(true, false, true, true, "VP8"); 465 UlpfecObserver test(true, false, true, true, "VP8");
466 RunBaseTest(&test); 466 RunBaseTest(&test);
467 } 467 }
468 468
469 TEST_F(VideoSendStreamTest, SupportsFecWithoutExtensions) { 469 TEST_F(VideoSendStreamTest, SupportsUlpfecWithoutExtensions) {
470 FecObserver test(false, false, true, true, "VP8"); 470 UlpfecObserver test(false, false, true, true, "VP8");
471 RunBaseTest(&test); 471 RunBaseTest(&test);
472 } 472 }
473 473
474 // The FEC scheme used is not efficient for H264, so we should not use RED/FEC 474 // The FEC scheme used is not efficient for H264, so we should not use RED/FEC
475 // since we'll still have to re-request FEC packets, effectively wasting 475 // since we'll still have to re-request FEC packets, effectively wasting
476 // bandwidth since the receiver has to wait for FEC retransmissions to determine 476 // bandwidth since the receiver has to wait for FEC retransmissions to determine
477 // that the received state is actually decodable. 477 // that the received state is actually decodable.
478 TEST_F(VideoSendStreamTest, DoesNotUtilizeFecForH264WithNackEnabled) { 478 TEST_F(VideoSendStreamTest, DoesNotUtilizeUlpfecForH264WithNackEnabled) {
479 FecObserver test(false, true, true, false, "H264"); 479 UlpfecObserver test(false, true, true, false, "H264");
480 RunBaseTest(&test); 480 RunBaseTest(&test);
481 } 481 }
482 482
483 // Without retransmissions FEC for H264 is fine. 483 // Without retransmissions FEC for H264 is fine.
484 TEST_F(VideoSendStreamTest, DoesUtilizeRedForH264WithoutNackEnabled) { 484 TEST_F(VideoSendStreamTest, DoesUtilizeRedForH264WithoutNackEnabled) {
485 FecObserver test(false, false, true, true, "H264"); 485 UlpfecObserver test(false, false, true, true, "H264");
486 RunBaseTest(&test); 486 RunBaseTest(&test);
487 } 487 }
488 488
489 TEST_F(VideoSendStreamTest, DoesUtilizeRedForVp8WithNackEnabled) { 489 TEST_F(VideoSendStreamTest, DoesUtilizeRedForVp8WithNackEnabled) {
490 FecObserver test(false, true, true, true, "VP8"); 490 UlpfecObserver test(false, true, true, true, "VP8");
491 RunBaseTest(&test); 491 RunBaseTest(&test);
492 } 492 }
493 493
494 #if !defined(RTC_DISABLE_VP9) 494 #if !defined(RTC_DISABLE_VP9)
495 TEST_F(VideoSendStreamTest, DoesUtilizeRedForVp9WithNackEnabled) { 495 TEST_F(VideoSendStreamTest, DoesUtilizeRedForVp9WithNackEnabled) {
496 FecObserver test(false, true, true, true, "VP9"); 496 UlpfecObserver test(false, true, true, true, "VP9");
497 RunBaseTest(&test); 497 RunBaseTest(&test);
498 } 498 }
499 #endif // !defined(RTC_DISABLE_VP9) 499 #endif // !defined(RTC_DISABLE_VP9)
500 500
501 void VideoSendStreamTest::TestNackRetransmission( 501 void VideoSendStreamTest::TestNackRetransmission(
502 uint32_t retransmit_ssrc, 502 uint32_t retransmit_ssrc,
503 uint8_t retransmit_payload_type) { 503 uint8_t retransmit_payload_type) {
504 class NackObserver : public test::SendTest { 504 class NackObserver : public test::SendTest {
505 public: 505 public:
506 explicit NackObserver(uint32_t retransmit_ssrc, 506 explicit NackObserver(uint32_t retransmit_ssrc,
(...skipping 2381 matching lines...) Expand 10 before | Expand all | Expand 10 after
2888 observation_complete_.Set(); 2888 observation_complete_.Set();
2889 } 2889 }
2890 } 2890 }
2891 } test; 2891 } test;
2892 2892
2893 RunBaseTest(&test); 2893 RunBaseTest(&test);
2894 } 2894 }
2895 #endif // !defined(RTC_DISABLE_VP9) 2895 #endif // !defined(RTC_DISABLE_VP9)
2896 2896
2897 } // namespace webrtc 2897 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698