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

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

Issue 2021063002: NetEq decoder database: Don't keep track of sample rate for builtin decoders (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@decoder-samp-rate
Patch Set: explicit capture Created 4 years, 6 months 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 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 for (uint8_t i = 0; i < 6; ++i) { 368 for (uint8_t i = 0; i < 6; ++i) {
369 // Let the payload type be |i|, and the payload value 10 * |i|. 369 // Let the payload type be |i|, and the payload value 10 * |i|.
370 packet_list.push_back(CreatePacket(i, kPayloadLength, 10 * i)); 370 packet_list.push_back(CreatePacket(i, kPayloadLength, 10 * i));
371 } 371 }
372 372
373 MockDecoderDatabase decoder_database; 373 MockDecoderDatabase decoder_database;
374 // Tell the mock decoder database to return DecoderInfo structs with different 374 // Tell the mock decoder database to return DecoderInfo structs with different
375 // codec types. 375 // codec types.
376 // Use scoped pointers to avoid having to delete them later. 376 // Use scoped pointers to avoid having to delete them later.
377 std::unique_ptr<DecoderDatabase::DecoderInfo> info0( 377 std::unique_ptr<DecoderDatabase::DecoderInfo> info0(
378 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderISAC, "", 16000, 378 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderISAC, ""));
379 nullptr));
380 EXPECT_CALL(decoder_database, GetDecoderInfo(0)) 379 EXPECT_CALL(decoder_database, GetDecoderInfo(0))
381 .WillRepeatedly(Return(info0.get())); 380 .WillRepeatedly(Return(info0.get()));
382 std::unique_ptr<DecoderDatabase::DecoderInfo> info1( 381 std::unique_ptr<DecoderDatabase::DecoderInfo> info1(
383 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderISACswb, "", 32000, 382 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderISACswb, ""));
384 nullptr));
385 EXPECT_CALL(decoder_database, GetDecoderInfo(1)) 383 EXPECT_CALL(decoder_database, GetDecoderInfo(1))
386 .WillRepeatedly(Return(info1.get())); 384 .WillRepeatedly(Return(info1.get()));
387 std::unique_ptr<DecoderDatabase::DecoderInfo> info2( 385 std::unique_ptr<DecoderDatabase::DecoderInfo> info2(
388 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderRED, "", 8000, 386 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderRED, ""));
389 nullptr));
390 EXPECT_CALL(decoder_database, GetDecoderInfo(2)) 387 EXPECT_CALL(decoder_database, GetDecoderInfo(2))
391 .WillRepeatedly(Return(info2.get())); 388 .WillRepeatedly(Return(info2.get()));
392 std::unique_ptr<DecoderDatabase::DecoderInfo> info3( 389 std::unique_ptr<DecoderDatabase::DecoderInfo> info3(
393 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderAVT, "", 8000, 390 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderAVT, ""));
394 nullptr));
395 EXPECT_CALL(decoder_database, GetDecoderInfo(3)) 391 EXPECT_CALL(decoder_database, GetDecoderInfo(3))
396 .WillRepeatedly(Return(info3.get())); 392 .WillRepeatedly(Return(info3.get()));
397 std::unique_ptr<DecoderDatabase::DecoderInfo> info4( 393 std::unique_ptr<DecoderDatabase::DecoderInfo> info4(
398 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderCNGnb, "", 8000, 394 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderCNGnb, ""));
399 nullptr));
400 EXPECT_CALL(decoder_database, GetDecoderInfo(4)) 395 EXPECT_CALL(decoder_database, GetDecoderInfo(4))
401 .WillRepeatedly(Return(info4.get())); 396 .WillRepeatedly(Return(info4.get()));
402 std::unique_ptr<DecoderDatabase::DecoderInfo> info5( 397 std::unique_ptr<DecoderDatabase::DecoderInfo> info5(
403 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderArbitrary, "", 398 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderArbitrary, ""));
404 8000, nullptr));
405 EXPECT_CALL(decoder_database, GetDecoderInfo(5)) 399 EXPECT_CALL(decoder_database, GetDecoderInfo(5))
406 .WillRepeatedly(Return(info5.get())); 400 .WillRepeatedly(Return(info5.get()));
407 401
408 PayloadSplitter splitter; 402 PayloadSplitter splitter;
409 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database)); 403 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database));
410 EXPECT_EQ(6u, packet_list.size()); 404 EXPECT_EQ(6u, packet_list.size());
411 405
412 // Check that all payloads are intact. 406 // Check that all payloads are intact.
413 uint8_t payload_type = 0; 407 uint8_t payload_type = 0;
414 PacketList::iterator it = packet_list.begin(); 408 PacketList::iterator it = packet_list.begin();
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 packet_list.push_back(CreatePacket(kPayloadType, payload_size_bytes, 526 packet_list.push_back(CreatePacket(kPayloadType, payload_size_bytes,
533 payload_size_ms)); 527 payload_size_ms));
534 } 528 }
535 529
536 MockDecoderDatabase decoder_database; 530 MockDecoderDatabase decoder_database;
537 // Tell the mock decoder database to return DecoderInfo structs with different 531 // Tell the mock decoder database to return DecoderInfo structs with different
538 // codec types. 532 // codec types.
539 // Use scoped pointers to avoid having to delete them later. 533 // Use scoped pointers to avoid having to delete them later.
540 // (Sample rate is set to 8000 Hz, but does not matter.) 534 // (Sample rate is set to 8000 Hz, but does not matter.)
541 std::unique_ptr<DecoderDatabase::DecoderInfo> info( 535 std::unique_ptr<DecoderDatabase::DecoderInfo> info(
542 new DecoderDatabase::DecoderInfo(decoder_type_, "", 8000, nullptr)); 536 new DecoderDatabase::DecoderInfo(decoder_type_, ""));
543 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType)) 537 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType))
544 .WillRepeatedly(Return(info.get())); 538 .WillRepeatedly(Return(info.get()));
545 539
546 PayloadSplitter splitter; 540 PayloadSplitter splitter;
547 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database)); 541 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database));
548 // The payloads are expected to be split as follows: 542 // The payloads are expected to be split as follows:
549 // 10 ms -> 10 ms 543 // 10 ms -> 10 ms
550 // 20 ms -> 20 ms 544 // 20 ms -> 20 ms
551 // 30 ms -> 30 ms 545 // 30 ms -> 30 ms
552 // 40 ms -> 20 + 20 ms 546 // 40 ms -> 20 + 20 ms
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 for (size_t i = 0; i < packet->payload_length; ++i) { 613 for (size_t i = 0; i < packet->payload_length; ++i) {
620 packet->payload[i] = static_cast<uint8_t>(i); 614 packet->payload[i] = static_cast<uint8_t>(i);
621 } 615 }
622 packet_list.push_back(packet); 616 packet_list.push_back(packet);
623 617
624 MockDecoderDatabase decoder_database; 618 MockDecoderDatabase decoder_database;
625 // Tell the mock decoder database to return DecoderInfo structs with different 619 // Tell the mock decoder database to return DecoderInfo structs with different
626 // codec types. 620 // codec types.
627 // Use scoped pointers to avoid having to delete them later. 621 // Use scoped pointers to avoid having to delete them later.
628 std::unique_ptr<DecoderDatabase::DecoderInfo> info( 622 std::unique_ptr<DecoderDatabase::DecoderInfo> info(
629 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderILBC, "", 8000, 623 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderILBC, ""));
630 nullptr));
631 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType)) 624 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType))
632 .WillRepeatedly(Return(info.get())); 625 .WillRepeatedly(Return(info.get()));
633 626
634 PayloadSplitter splitter; 627 PayloadSplitter splitter;
635 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database)); 628 EXPECT_EQ(0, splitter.SplitAudio(&packet_list, decoder_database));
636 EXPECT_EQ(num_frames_, packet_list.size()); 629 EXPECT_EQ(num_frames_, packet_list.size());
637 630
638 PacketList::iterator it = packet_list.begin(); 631 PacketList::iterator it = packet_list.begin();
639 int frame_num = 0; 632 int frame_num = 0;
640 uint8_t payload_value = 0; 633 uint8_t payload_value = 0;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 // Test too large payload size. 676 // Test too large payload size.
684 TEST(IlbcPayloadSplitter, TooLargePayload) { 677 TEST(IlbcPayloadSplitter, TooLargePayload) {
685 PacketList packet_list; 678 PacketList packet_list;
686 static const uint8_t kPayloadType = 17; // Just a random number. 679 static const uint8_t kPayloadType = 17; // Just a random number.
687 size_t kPayloadLengthBytes = 950; 680 size_t kPayloadLengthBytes = 950;
688 Packet* packet = CreatePacket(kPayloadType, kPayloadLengthBytes, 0); 681 Packet* packet = CreatePacket(kPayloadType, kPayloadLengthBytes, 0);
689 packet_list.push_back(packet); 682 packet_list.push_back(packet);
690 683
691 MockDecoderDatabase decoder_database; 684 MockDecoderDatabase decoder_database;
692 std::unique_ptr<DecoderDatabase::DecoderInfo> info( 685 std::unique_ptr<DecoderDatabase::DecoderInfo> info(
693 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderILBC, "", 8000, 686 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderILBC, ""));
694 nullptr));
695 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType)) 687 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType))
696 .WillRepeatedly(Return(info.get())); 688 .WillRepeatedly(Return(info.get()));
697 689
698 PayloadSplitter splitter; 690 PayloadSplitter splitter;
699 EXPECT_EQ(PayloadSplitter::kTooLargePayload, 691 EXPECT_EQ(PayloadSplitter::kTooLargePayload,
700 splitter.SplitAudio(&packet_list, decoder_database)); 692 splitter.SplitAudio(&packet_list, decoder_database));
701 EXPECT_EQ(1u, packet_list.size()); 693 EXPECT_EQ(1u, packet_list.size());
702 694
703 // Delete the packets and payloads to avoid having the test leak memory. 695 // Delete the packets and payloads to avoid having the test leak memory.
704 PacketList::iterator it = packet_list.begin(); 696 PacketList::iterator it = packet_list.begin();
(...skipping 10 matching lines...) Expand all
715 // Payload not an integer number of frames. 707 // Payload not an integer number of frames.
716 TEST(IlbcPayloadSplitter, UnevenPayload) { 708 TEST(IlbcPayloadSplitter, UnevenPayload) {
717 PacketList packet_list; 709 PacketList packet_list;
718 static const uint8_t kPayloadType = 17; // Just a random number. 710 static const uint8_t kPayloadType = 17; // Just a random number.
719 size_t kPayloadLengthBytes = 39; // Not an even number of frames. 711 size_t kPayloadLengthBytes = 39; // Not an even number of frames.
720 Packet* packet = CreatePacket(kPayloadType, kPayloadLengthBytes, 0); 712 Packet* packet = CreatePacket(kPayloadType, kPayloadLengthBytes, 0);
721 packet_list.push_back(packet); 713 packet_list.push_back(packet);
722 714
723 MockDecoderDatabase decoder_database; 715 MockDecoderDatabase decoder_database;
724 std::unique_ptr<DecoderDatabase::DecoderInfo> info( 716 std::unique_ptr<DecoderDatabase::DecoderInfo> info(
725 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderILBC, "", 8000, 717 new DecoderDatabase::DecoderInfo(NetEqDecoder::kDecoderILBC, ""));
726 nullptr));
727 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType)) 718 EXPECT_CALL(decoder_database, GetDecoderInfo(kPayloadType))
728 .WillRepeatedly(Return(info.get())); 719 .WillRepeatedly(Return(info.get()));
729 720
730 PayloadSplitter splitter; 721 PayloadSplitter splitter;
731 EXPECT_EQ(PayloadSplitter::kFrameSplitError, 722 EXPECT_EQ(PayloadSplitter::kFrameSplitError,
732 splitter.SplitAudio(&packet_list, decoder_database)); 723 splitter.SplitAudio(&packet_list, decoder_database));
733 EXPECT_EQ(1u, packet_list.size()); 724 EXPECT_EQ(1u, packet_list.size());
734 725
735 // Delete the packets and payloads to avoid having the test leak memory. 726 // Delete the packets and payloads to avoid having the test leak memory.
736 PacketList::iterator it = packet_list.begin(); 727 PacketList::iterator it = packet_list.begin();
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 EXPECT_EQ(kBaseTimestamp - kTimestampOffset, packet->header.timestamp); 847 EXPECT_EQ(kBaseTimestamp - kTimestampOffset, packet->header.timestamp);
857 EXPECT_EQ(kPayloadLength, packet->payload_length); 848 EXPECT_EQ(kPayloadLength, packet->payload_length);
858 EXPECT_TRUE(packet->primary); 849 EXPECT_TRUE(packet->primary);
859 EXPECT_EQ(packet->payload[3], 0); 850 EXPECT_EQ(packet->payload[3], 0);
860 delete [] packet->payload; 851 delete [] packet->payload;
861 delete packet; 852 delete packet;
862 packet_list.pop_front(); 853 packet_list.pop_front();
863 } 854 }
864 855
865 } // namespace webrtc 856 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698