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

Side by Side Diff: webrtc/modules/audio_coding/neteq/payload_splitter_unittest.cc

Issue 1424083002: Make an enum class out of NetEqDecoder, and hide the neteq_decoders_ table (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 10
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 for (uint8_t i = 0; i <= 3; ++i) { 303 for (uint8_t i = 0; i <= 3; ++i) {
304 // Create packet with payload type |i|, payload length 10 bytes, all 0. 304 // Create packet with payload type |i|, payload length 10 bytes, all 0.
305 Packet* packet = CreatePacket(i, 10, 0); 305 Packet* packet = CreatePacket(i, 10, 0);
306 packet_list.push_back(packet); 306 packet_list.push_back(packet);
307 } 307 }
308 308
309 // Use a real DecoderDatabase object here instead of a mock, since it is 309 // Use a real DecoderDatabase object here instead of a mock, since it is
310 // easier to just register the payload types and let the actual implementation 310 // easier to just register the payload types and let the actual implementation
311 // do its job. 311 // do its job.
312 DecoderDatabase decoder_database; 312 DecoderDatabase decoder_database;
313 decoder_database.RegisterPayload(0, kDecoderCNGnb); 313 decoder_database.RegisterPayload(0, NetEqDecoder::kDecoderCNGnb);
314 decoder_database.RegisterPayload(1, kDecoderPCMu); 314 decoder_database.RegisterPayload(1, NetEqDecoder::kDecoderPCMu);
315 decoder_database.RegisterPayload(2, kDecoderAVT); 315 decoder_database.RegisterPayload(2, NetEqDecoder::kDecoderAVT);
316 decoder_database.RegisterPayload(3, kDecoderILBC); 316 decoder_database.RegisterPayload(3, NetEqDecoder::kDecoderILBC);
317 317
318 PayloadSplitter splitter; 318 PayloadSplitter splitter;
319 splitter.CheckRedPayloads(&packet_list, decoder_database); 319 splitter.CheckRedPayloads(&packet_list, decoder_database);
320 320
321 ASSERT_EQ(3u, packet_list.size()); // Should have dropped the last packet. 321 ASSERT_EQ(3u, packet_list.size()); // Should have dropped the last packet.
322 // Verify packets. The loop verifies that payload types 0, 1, and 2 are in the 322 // Verify packets. The loop verifies that payload types 0, 1, and 2 are in the
323 // list. 323 // list.
324 for (int i = 0; i <= 2; ++i) { 324 for (int i = 0; i <= 2; ++i) {
325 Packet* packet = packet_list.front(); 325 Packet* packet = packet_list.front();
326 VerifyPacket(packet, 10, i, kSequenceNumber, kBaseTimestamp, 0, true); 326 VerifyPacket(packet, 10, i, kSequenceNumber, kBaseTimestamp, 0, true);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 for (uint8_t i = 0; i < 6; ++i) { 365 for (uint8_t i = 0; i < 6; ++i) {
366 // Let the payload type be |i|, and the payload value 10 * |i|. 366 // Let the payload type be |i|, and the payload value 10 * |i|.
367 packet_list.push_back(CreatePacket(i, kPayloadLength, 10 * i)); 367 packet_list.push_back(CreatePacket(i, kPayloadLength, 10 * i));
368 } 368 }
369 369
370 MockDecoderDatabase decoder_database; 370 MockDecoderDatabase decoder_database;
371 // Tell the mock decoder database to return DecoderInfo structs with different 371 // Tell the mock decoder database to return DecoderInfo structs with different
372 // codec types. 372 // codec types.
373 // Use scoped pointers to avoid having to delete them later. 373 // Use scoped pointers to avoid having to delete them later.
374 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info0( 374 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info0(
375 new DecoderDatabase::DecoderInfo(kDecoderISAC, 16000, NULL, false)); 375 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderISAC, 16000, NULL,
376 false));
376 EXPECT_CALL(decoder_database, GetDecoderInfo(0)) 377 EXPECT_CALL(decoder_database, GetDecoderInfo(0))
377 .WillRepeatedly(Return(info0.get())); 378 .WillRepeatedly(Return(info0.get()));
378 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info1( 379 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info1(
379 new DecoderDatabase::DecoderInfo(kDecoderISACswb, 32000, NULL, false)); 380 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderISACswb, 32000,
381 NULL, false));
380 EXPECT_CALL(decoder_database, GetDecoderInfo(1)) 382 EXPECT_CALL(decoder_database, GetDecoderInfo(1))
381 .WillRepeatedly(Return(info1.get())); 383 .WillRepeatedly(Return(info1.get()));
382 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info2( 384 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info2(
383 new DecoderDatabase::DecoderInfo(kDecoderRED, 8000, NULL, false)); 385 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderRED, 8000, NULL,
386 false));
384 EXPECT_CALL(decoder_database, GetDecoderInfo(2)) 387 EXPECT_CALL(decoder_database, GetDecoderInfo(2))
385 .WillRepeatedly(Return(info2.get())); 388 .WillRepeatedly(Return(info2.get()));
386 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info3( 389 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info3(
387 new DecoderDatabase::DecoderInfo(kDecoderAVT, 8000, NULL, false)); 390 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderAVT, 8000, NULL,
391 false));
388 EXPECT_CALL(decoder_database, GetDecoderInfo(3)) 392 EXPECT_CALL(decoder_database, GetDecoderInfo(3))
389 .WillRepeatedly(Return(info3.get())); 393 .WillRepeatedly(Return(info3.get()));
390 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info4( 394 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info4(
391 new DecoderDatabase::DecoderInfo(kDecoderCNGnb, 8000, NULL, false)); 395 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderCNGnb, 8000, NULL,
396 false));
392 EXPECT_CALL(decoder_database, GetDecoderInfo(4)) 397 EXPECT_CALL(decoder_database, GetDecoderInfo(4))
393 .WillRepeatedly(Return(info4.get())); 398 .WillRepeatedly(Return(info4.get()));
394 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info5( 399 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info5(
395 new DecoderDatabase::DecoderInfo(kDecoderArbitrary, 8000, NULL, false)); 400 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderArbitrary, 8000,
401 NULL, false));
396 EXPECT_CALL(decoder_database, GetDecoderInfo(5)) 402 EXPECT_CALL(decoder_database, GetDecoderInfo(5))
397 .WillRepeatedly(Return(info5.get())); 403 .WillRepeatedly(Return(info5.get()));
398 404
399 PayloadSplitter splitter; 405 PayloadSplitter splitter;
400 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database)); 406 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database));
401 EXPECT_EQ(6u, packet_list.size()); 407 EXPECT_EQ(6u, packet_list.size());
402 408
403 // Check that all payloads are intact. 409 // Check that all payloads are intact.
404 uint8_t payload_type = 0; 410 uint8_t payload_type = 0;
405 PacketList::iterator it = packet_list.begin(); 411 PacketList::iterator it = packet_list.begin();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 451
446 // The destructor is called when decoder_database goes out of scope. 452 // The destructor is called when decoder_database goes out of scope.
447 EXPECT_CALL(decoder_database, Die()); 453 EXPECT_CALL(decoder_database, Die());
448 } 454 }
449 455
450 class SplitBySamplesTest : public ::testing::TestWithParam<NetEqDecoder> { 456 class SplitBySamplesTest : public ::testing::TestWithParam<NetEqDecoder> {
451 protected: 457 protected:
452 virtual void SetUp() { 458 virtual void SetUp() {
453 decoder_type_ = GetParam(); 459 decoder_type_ = GetParam();
454 switch (decoder_type_) { 460 switch (decoder_type_) {
455 case kDecoderPCMu: 461 case NetEqDecoder::kDecoderPCMu:
456 case kDecoderPCMa: 462 case NetEqDecoder::kDecoderPCMa:
457 bytes_per_ms_ = 8; 463 bytes_per_ms_ = 8;
458 samples_per_ms_ = 8; 464 samples_per_ms_ = 8;
459 break; 465 break;
460 case kDecoderPCMu_2ch: 466 case NetEqDecoder::kDecoderPCMu_2ch:
461 case kDecoderPCMa_2ch: 467 case NetEqDecoder::kDecoderPCMa_2ch:
462 bytes_per_ms_ = 2 * 8; 468 bytes_per_ms_ = 2 * 8;
463 samples_per_ms_ = 8; 469 samples_per_ms_ = 8;
464 break; 470 break;
465 case kDecoderG722: 471 case NetEqDecoder::kDecoderG722:
466 bytes_per_ms_ = 8; 472 bytes_per_ms_ = 8;
467 samples_per_ms_ = 16; 473 samples_per_ms_ = 16;
468 break; 474 break;
469 case kDecoderPCM16B: 475 case NetEqDecoder::kDecoderPCM16B:
470 bytes_per_ms_ = 16; 476 bytes_per_ms_ = 16;
471 samples_per_ms_ = 8; 477 samples_per_ms_ = 8;
472 break; 478 break;
473 case kDecoderPCM16Bwb: 479 case NetEqDecoder::kDecoderPCM16Bwb:
474 bytes_per_ms_ = 32; 480 bytes_per_ms_ = 32;
475 samples_per_ms_ = 16; 481 samples_per_ms_ = 16;
476 break; 482 break;
477 case kDecoderPCM16Bswb32kHz: 483 case NetEqDecoder::kDecoderPCM16Bswb32kHz:
478 bytes_per_ms_ = 64; 484 bytes_per_ms_ = 64;
479 samples_per_ms_ = 32; 485 samples_per_ms_ = 32;
480 break; 486 break;
481 case kDecoderPCM16Bswb48kHz: 487 case NetEqDecoder::kDecoderPCM16Bswb48kHz:
482 bytes_per_ms_ = 96; 488 bytes_per_ms_ = 96;
483 samples_per_ms_ = 48; 489 samples_per_ms_ = 48;
484 break; 490 break;
485 case kDecoderPCM16B_2ch: 491 case NetEqDecoder::kDecoderPCM16B_2ch:
486 bytes_per_ms_ = 2 * 16; 492 bytes_per_ms_ = 2 * 16;
487 samples_per_ms_ = 8; 493 samples_per_ms_ = 8;
488 break; 494 break;
489 case kDecoderPCM16Bwb_2ch: 495 case NetEqDecoder::kDecoderPCM16Bwb_2ch:
490 bytes_per_ms_ = 2 * 32; 496 bytes_per_ms_ = 2 * 32;
491 samples_per_ms_ = 16; 497 samples_per_ms_ = 16;
492 break; 498 break;
493 case kDecoderPCM16Bswb32kHz_2ch: 499 case NetEqDecoder::kDecoderPCM16Bswb32kHz_2ch:
494 bytes_per_ms_ = 2 * 64; 500 bytes_per_ms_ = 2 * 64;
495 samples_per_ms_ = 32; 501 samples_per_ms_ = 32;
496 break; 502 break;
497 case kDecoderPCM16Bswb48kHz_2ch: 503 case NetEqDecoder::kDecoderPCM16Bswb48kHz_2ch:
498 bytes_per_ms_ = 2 * 96; 504 bytes_per_ms_ = 2 * 96;
499 samples_per_ms_ = 48; 505 samples_per_ms_ = 48;
500 break; 506 break;
501 case kDecoderPCM16B_5ch: 507 case NetEqDecoder::kDecoderPCM16B_5ch:
502 bytes_per_ms_ = 5 * 16; 508 bytes_per_ms_ = 5 * 16;
503 samples_per_ms_ = 8; 509 samples_per_ms_ = 8;
504 break; 510 break;
505 default: 511 default:
506 assert(false); 512 assert(false);
507 break; 513 break;
508 } 514 }
509 } 515 }
510 size_t bytes_per_ms_; 516 size_t bytes_per_ms_;
511 int samples_per_ms_; 517 int samples_per_ms_;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 delete (*it); 568 delete (*it);
563 it = packet_list.erase(it); 569 it = packet_list.erase(it);
564 ++i; 570 ++i;
565 } 571 }
566 572
567 // The destructor is called when decoder_database goes out of scope. 573 // The destructor is called when decoder_database goes out of scope.
568 EXPECT_CALL(decoder_database, Die()); 574 EXPECT_CALL(decoder_database, Die());
569 } 575 }
570 576
571 INSTANTIATE_TEST_CASE_P( 577 INSTANTIATE_TEST_CASE_P(
572 PayloadSplitter, SplitBySamplesTest, 578 PayloadSplitter,
573 ::testing::Values(kDecoderPCMu, kDecoderPCMa, kDecoderPCMu_2ch, 579 SplitBySamplesTest,
574 kDecoderPCMa_2ch, kDecoderG722, kDecoderPCM16B, 580 ::testing::Values(NetEqDecoder::kDecoderPCMu,
575 kDecoderPCM16Bwb, kDecoderPCM16Bswb32kHz, 581 NetEqDecoder::kDecoderPCMa,
576 kDecoderPCM16Bswb48kHz, kDecoderPCM16B_2ch, 582 NetEqDecoder::kDecoderPCMu_2ch,
577 kDecoderPCM16Bwb_2ch, kDecoderPCM16Bswb32kHz_2ch, 583 NetEqDecoder::kDecoderPCMa_2ch,
578 kDecoderPCM16Bswb48kHz_2ch, kDecoderPCM16B_5ch)); 584 NetEqDecoder::kDecoderG722,
579 585 NetEqDecoder::kDecoderPCM16B,
586 NetEqDecoder::kDecoderPCM16Bwb,
587 NetEqDecoder::kDecoderPCM16Bswb32kHz,
588 NetEqDecoder::kDecoderPCM16Bswb48kHz,
589 NetEqDecoder::kDecoderPCM16B_2ch,
590 NetEqDecoder::kDecoderPCM16Bwb_2ch,
591 NetEqDecoder::kDecoderPCM16Bswb32kHz_2ch,
592 NetEqDecoder::kDecoderPCM16Bswb48kHz_2ch,
593 NetEqDecoder::kDecoderPCM16B_5ch));
580 594
581 class SplitIlbcTest : public ::testing::TestWithParam<std::pair<int, int> > { 595 class SplitIlbcTest : public ::testing::TestWithParam<std::pair<int, int> > {
582 protected: 596 protected:
583 virtual void SetUp() { 597 virtual void SetUp() {
584 const std::pair<int, int> parameters = GetParam(); 598 const std::pair<int, int> parameters = GetParam();
585 num_frames_ = parameters.first; 599 num_frames_ = parameters.first;
586 frame_length_ms_ = parameters.second; 600 frame_length_ms_ = parameters.second;
587 frame_length_bytes_ = (frame_length_ms_ == 20) ? 38 : 50; 601 frame_length_bytes_ = (frame_length_ms_ == 20) ? 38 : 50;
588 } 602 }
589 size_t num_frames_; 603 size_t num_frames_;
(...skipping 12 matching lines...) Expand all
602 for (size_t i = 0; i < packet->payload_length; ++i) { 616 for (size_t i = 0; i < packet->payload_length; ++i) {
603 packet->payload[i] = static_cast<uint8_t>(i); 617 packet->payload[i] = static_cast<uint8_t>(i);
604 } 618 }
605 packet_list.push_back(packet); 619 packet_list.push_back(packet);
606 620
607 MockDecoderDatabase decoder_database; 621 MockDecoderDatabase decoder_database;
608 // Tell the mock decoder database to return DecoderInfo structs with different 622 // Tell the mock decoder database to return DecoderInfo structs with different
609 // codec types. 623 // codec types.
610 // Use scoped pointers to avoid having to delete them later. 624 // Use scoped pointers to avoid having to delete them later.
611 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info( 625 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info(
612 new DecoderDatabase::DecoderInfo(kDecoderILBC, 8000, NULL, false)); 626 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderILBC, 8000, NULL,
627 false));
613 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType)) 628 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType))
614 .WillRepeatedly(Return(info.get())); 629 .WillRepeatedly(Return(info.get()));
615 630
616 PayloadSplitter splitter; 631 PayloadSplitter splitter;
617 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database)); 632 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database));
618 EXPECT_EQ(num_frames_, packet_list.size()); 633 EXPECT_EQ(num_frames_, packet_list.size());
619 634
620 PacketList::iterator it = packet_list.begin(); 635 PacketList::iterator it = packet_list.begin();
621 int frame_num = 0; 636 int frame_num = 0;
622 uint8_t payload_value = 0; 637 uint8_t payload_value = 0;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 // Test too large payload size. 680 // Test too large payload size.
666 TEST(IlbcPayloadSplitter, TooLargePayload) { 681 TEST(IlbcPayloadSplitter, TooLargePayload) {
667 PacketList packet_list; 682 PacketList packet_list;
668 static const uint8_t kPayloadType = 17; // Just a random number. 683 static const uint8_t kPayloadType = 17; // Just a random number.
669 size_t kPayloadLengthBytes = 950; 684 size_t kPayloadLengthBytes = 950;
670 Packet* packet = CreatePacket(kPayloadType, kPayloadLengthBytes, 0); 685 Packet* packet = CreatePacket(kPayloadType, kPayloadLengthBytes, 0);
671 packet_list.push_back(packet); 686 packet_list.push_back(packet);
672 687
673 MockDecoderDatabase decoder_database; 688 MockDecoderDatabase decoder_database;
674 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info( 689 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info(
675 new DecoderDatabase::DecoderInfo(kDecoderILBC, 8000, NULL, false)); 690 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderILBC, 8000, NULL,
691 false));
676 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType)) 692 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType))
677 .WillRepeatedly(Return(info.get())); 693 .WillRepeatedly(Return(info.get()));
678 694
679 PayloadSplitter splitter; 695 PayloadSplitter splitter;
680 EXPECT_EQ(PayloadSplitter::kTooLargePayload, 696 EXPECT_EQ(PayloadSplitter::kTooLargePayload,
681 splitter.SplitAudio(&packet_list, decoder_database)); 697 splitter.SplitAudio(&packet_list, decoder_database));
682 EXPECT_EQ(1u, packet_list.size()); 698 EXPECT_EQ(1u, packet_list.size());
683 699
684 // Delete the packets and payloads to avoid having the test leak memory. 700 // Delete the packets and payloads to avoid having the test leak memory.
685 PacketList::iterator it = packet_list.begin(); 701 PacketList::iterator it = packet_list.begin();
(...skipping 10 matching lines...) Expand all
696 // Payload not an integer number of frames. 712 // Payload not an integer number of frames.
697 TEST(IlbcPayloadSplitter, UnevenPayload) { 713 TEST(IlbcPayloadSplitter, UnevenPayload) {
698 PacketList packet_list; 714 PacketList packet_list;
699 static const uint8_t kPayloadType = 17; // Just a random number. 715 static const uint8_t kPayloadType = 17; // Just a random number.
700 size_t kPayloadLengthBytes = 39; // Not an even number of frames. 716 size_t kPayloadLengthBytes = 39; // Not an even number of frames.
701 Packet* packet = CreatePacket(kPayloadType, kPayloadLengthBytes, 0); 717 Packet* packet = CreatePacket(kPayloadType, kPayloadLengthBytes, 0);
702 packet_list.push_back(packet); 718 packet_list.push_back(packet);
703 719
704 MockDecoderDatabase decoder_database; 720 MockDecoderDatabase decoder_database;
705 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info( 721 rtc::scoped_ptr<DecoderDatabase::DecoderInfo> info(
706 new DecoderDatabase::DecoderInfo(kDecoderILBC, 8000, NULL, false)); 722 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderILBC, 8000, NULL,
723 false));
707 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType)) 724 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType))
708 .WillRepeatedly(Return(info.get())); 725 .WillRepeatedly(Return(info.get()));
709 726
710 PayloadSplitter splitter; 727 PayloadSplitter splitter;
711 EXPECT_EQ(PayloadSplitter::kFrameSplitError, 728 EXPECT_EQ(PayloadSplitter::kFrameSplitError,
712 splitter.SplitAudio(&packet_list, decoder_database)); 729 splitter.SplitAudio(&packet_list, decoder_database));
713 EXPECT_EQ(1u, packet_list.size()); 730 EXPECT_EQ(1u, packet_list.size());
714 731
715 // Delete the packets and payloads to avoid having the test leak memory. 732 // Delete the packets and payloads to avoid having the test leak memory.
716 PacketList::iterator it = packet_list.begin(); 733 PacketList::iterator it = packet_list.begin();
717 while (it != packet_list.end()) { 734 while (it != packet_list.end()) {
718 delete [] (*it)->payload; 735 delete [] (*it)->payload;
719 delete (*it); 736 delete (*it);
720 it = packet_list.erase(it); 737 it = packet_list.erase(it);
721 } 738 }
722 739
723 // The destructor is called when decoder_database goes out of scope. 740 // The destructor is called when decoder_database goes out of scope.
724 EXPECT_CALL(decoder_database, Die()); 741 EXPECT_CALL(decoder_database, Die());
725 } 742 }
726 743
727 TEST(FecPayloadSplitter, MixedPayload) { 744 TEST(FecPayloadSplitter, MixedPayload) {
728 PacketList packet_list; 745 PacketList packet_list;
729 DecoderDatabase decoder_database; 746 DecoderDatabase decoder_database;
730 747
731 decoder_database.RegisterPayload(0, kDecoderOpus); 748 decoder_database.RegisterPayload(0, NetEqDecoder::kDecoderOpus);
732 decoder_database.RegisterPayload(1, kDecoderPCMu); 749 decoder_database.RegisterPayload(1, NetEqDecoder::kDecoderPCMu);
733 750
734 Packet* packet = CreatePacket(0, 10, 0xFF, true); 751 Packet* packet = CreatePacket(0, 10, 0xFF, true);
735 packet_list.push_back(packet); 752 packet_list.push_back(packet);
736 753
737 packet = CreatePacket(0, 10, 0); // Non-FEC Opus payload. 754 packet = CreatePacket(0, 10, 0); // Non-FEC Opus payload.
738 packet_list.push_back(packet); 755 packet_list.push_back(packet);
739 756
740 packet = CreatePacket(1, 10, 0); // Non-Opus payload. 757 packet = CreatePacket(1, 10, 0); // Non-Opus payload.
741 packet_list.push_back(packet); 758 packet_list.push_back(packet);
742 759
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 delete [] packet->payload; 795 delete [] packet->payload;
779 delete packet; 796 delete packet;
780 } 797 }
781 798
782 TEST(FecPayloadSplitter, EmbedFecInRed) { 799 TEST(FecPayloadSplitter, EmbedFecInRed) {
783 PacketList packet_list; 800 PacketList packet_list;
784 DecoderDatabase decoder_database; 801 DecoderDatabase decoder_database;
785 802
786 const int kTimestampOffset = 20 * 48; // 20 ms * 48 kHz. 803 const int kTimestampOffset = 20 * 48; // 20 ms * 48 kHz.
787 uint8_t payload_types[] = {0, 0}; 804 uint8_t payload_types[] = {0, 0};
788 decoder_database.RegisterPayload(0, kDecoderOpus); 805 decoder_database.RegisterPayload(0, NetEqDecoder::kDecoderOpus);
789 Packet* packet = CreateRedPayload(2, payload_types, kTimestampOffset, true); 806 Packet* packet = CreateRedPayload(2, payload_types, kTimestampOffset, true);
790 packet_list.push_back(packet); 807 packet_list.push_back(packet);
791 808
792 PayloadSplitter splitter; 809 PayloadSplitter splitter;
793 EXPECT_EQ(PayloadSplitter::kOK, 810 EXPECT_EQ(PayloadSplitter::kOK,
794 splitter.SplitRed(&packet_list)); 811 splitter.SplitRed(&packet_list));
795 EXPECT_EQ(PayloadSplitter::kOK, 812 EXPECT_EQ(PayloadSplitter::kOK,
796 splitter.SplitFec(&packet_list, &decoder_database)); 813 splitter.SplitFec(&packet_list, &decoder_database));
797 814
798 EXPECT_EQ(4u, packet_list.size()); 815 EXPECT_EQ(4u, packet_list.size());
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 EXPECT_EQ(kBaseTimestamp - kTimestampOffset, packet->header.timestamp); 853 EXPECT_EQ(kBaseTimestamp - kTimestampOffset, packet->header.timestamp);
837 EXPECT_EQ(kPayloadLength, packet->payload_length); 854 EXPECT_EQ(kPayloadLength, packet->payload_length);
838 EXPECT_TRUE(packet->primary); 855 EXPECT_TRUE(packet->primary);
839 EXPECT_EQ(packet->payload[3], 0); 856 EXPECT_EQ(packet->payload[3], 0);
840 delete [] packet->payload; 857 delete [] packet->payload;
841 delete packet; 858 delete packet;
842 packet_list.pop_front(); 859 packet_list.pop_front();
843 } 860 }
844 861
845 } // namespace webrtc 862 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/neteq/payload_splitter.cc ('k') | webrtc/modules/audio_coding/neteq/test/RTPencode.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698