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

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

Issue 1184313002: Add AudioEncoder::GetTargetBitrate (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Getting rid of erroneous code Created 5 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 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 478
479 TEST_F(AudioDecoderPcmUTest, EncodeDecode) { 479 TEST_F(AudioDecoderPcmUTest, EncodeDecode) {
480 int tolerance = 251; 480 int tolerance = 251;
481 double mse = 1734.0; 481 double mse = 1734.0;
482 EXPECT_TRUE(CodecSupported(kDecoderPCMu)); 482 EXPECT_TRUE(CodecSupported(kDecoderPCMu));
483 EncodeDecodeTest(data_length_, tolerance, mse); 483 EncodeDecodeTest(data_length_, tolerance, mse);
484 ReInitTest(); 484 ReInitTest();
485 EXPECT_FALSE(decoder_->HasDecodePlc()); 485 EXPECT_FALSE(decoder_->HasDecodePlc());
486 } 486 }
487 487
488 namespace {
489 void TestPcmSetTargetBitrates(AudioEncoder* audio_encoder, int fixed_rate) {
490 EXPECT_EQ(fixed_rate, audio_encoder->SetTargetBitrate(32000));
491 EXPECT_EQ(fixed_rate, audio_encoder->SetTargetBitrate(fixed_rate - 1));
492 EXPECT_EQ(fixed_rate, audio_encoder->SetTargetBitrate(fixed_rate));
493 EXPECT_EQ(fixed_rate, audio_encoder->SetTargetBitrate(fixed_rate + 1));
494 }
495 } // namespace
496
497 TEST_F(AudioDecoderPcmUTest, SetTargetBitrate) {
498 TestPcmSetTargetBitrates(audio_encoder_.get(), 64000);
499 }
500
488 TEST_F(AudioDecoderPcmATest, EncodeDecode) { 501 TEST_F(AudioDecoderPcmATest, EncodeDecode) {
489 int tolerance = 308; 502 int tolerance = 308;
490 double mse = 1931.0; 503 double mse = 1931.0;
491 EXPECT_TRUE(CodecSupported(kDecoderPCMa)); 504 EXPECT_TRUE(CodecSupported(kDecoderPCMa));
492 EncodeDecodeTest(data_length_, tolerance, mse); 505 EncodeDecodeTest(data_length_, tolerance, mse);
493 ReInitTest(); 506 ReInitTest();
494 EXPECT_FALSE(decoder_->HasDecodePlc()); 507 EXPECT_FALSE(decoder_->HasDecodePlc());
495 } 508 }
496 509
510 TEST_F(AudioDecoderPcmATest, SetTargetBitrate) {
511 TestPcmSetTargetBitrates(audio_encoder_.get(), 64000);
512 }
513
497 TEST_F(AudioDecoderPcm16BTest, EncodeDecode) { 514 TEST_F(AudioDecoderPcm16BTest, EncodeDecode) {
498 int tolerance = 0; 515 int tolerance = 0;
499 double mse = 0.0; 516 double mse = 0.0;
500 EXPECT_TRUE(CodecSupported(kDecoderPCM16B)); 517 EXPECT_TRUE(CodecSupported(kDecoderPCM16B));
501 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bwb)); 518 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bwb));
502 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bswb32kHz)); 519 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bswb32kHz));
503 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bswb48kHz)); 520 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bswb48kHz));
504 EncodeDecodeTest(2 * data_length_, tolerance, mse); 521 EncodeDecodeTest(2 * data_length_, tolerance, mse);
505 ReInitTest(); 522 ReInitTest();
506 EXPECT_FALSE(decoder_->HasDecodePlc()); 523 EXPECT_FALSE(decoder_->HasDecodePlc());
507 } 524 }
508 525
526 TEST_F(AudioDecoderPcm16BTest, SetTargetBitrate) {
527 TestPcmSetTargetBitrates(audio_encoder_.get(), codec_input_rate_hz_ * 16);
528 }
529
509 TEST_F(AudioDecoderIlbcTest, EncodeDecode) { 530 TEST_F(AudioDecoderIlbcTest, EncodeDecode) {
510 int tolerance = 6808; 531 int tolerance = 6808;
511 double mse = 2.13e6; 532 double mse = 2.13e6;
512 int delay = 80; // Delay from input to output. 533 int delay = 80; // Delay from input to output.
513 EXPECT_TRUE(CodecSupported(kDecoderILBC)); 534 EXPECT_TRUE(CodecSupported(kDecoderILBC));
514 EncodeDecodeTest(500, tolerance, mse, delay); 535 EncodeDecodeTest(500, tolerance, mse, delay);
515 ReInitTest(); 536 ReInitTest();
516 EXPECT_TRUE(decoder_->HasDecodePlc()); 537 EXPECT_TRUE(decoder_->HasDecodePlc());
517 DecodePlcTest(); 538 DecodePlcTest();
518 } 539 }
519 540
541 TEST_F(AudioDecoderIlbcTest, SetTargetBitrate) {
542 EXPECT_EQ(13333, audio_encoder_->SetTargetBitrate(10000));
543 EXPECT_EQ(13333, audio_encoder_->SetTargetBitrate(13333));
544 EXPECT_EQ(13333, audio_encoder_->SetTargetBitrate(20000));
545 }
546
520 TEST_F(AudioDecoderIsacFloatTest, EncodeDecode) { 547 TEST_F(AudioDecoderIsacFloatTest, EncodeDecode) {
521 int tolerance = 3399; 548 int tolerance = 3399;
522 double mse = 434951.0; 549 double mse = 434951.0;
523 int delay = 48; // Delay from input to output. 550 int delay = 48; // Delay from input to output.
524 EXPECT_TRUE(CodecSupported(kDecoderISAC)); 551 EXPECT_TRUE(CodecSupported(kDecoderISAC));
525 EncodeDecodeTest(0, tolerance, mse, delay); 552 EncodeDecodeTest(0, tolerance, mse, delay);
526 ReInitTest(); 553 ReInitTest();
527 EXPECT_FALSE(decoder_->HasDecodePlc()); 554 EXPECT_FALSE(decoder_->HasDecodePlc());
528 } 555 }
529 556
557 namespace {
558 void TestIsacSetTargetBitrates(AudioEncoder* audio_encoder, bool swb) {
559 const int max_rate_bps = (swb ? 56000 : 32000);
560 EXPECT_EQ(10000, audio_encoder->SetTargetBitrate(9000));
561 EXPECT_EQ(10000, audio_encoder->SetTargetBitrate(10000));
562 EXPECT_EQ(32000, audio_encoder->SetTargetBitrate(32000));
563 EXPECT_EQ(std::min(max_rate_bps, 33000),
564 audio_encoder->SetTargetBitrate(33000));
565 EXPECT_EQ(std::min(max_rate_bps, 56000),
566 audio_encoder->SetTargetBitrate(56000));
567 EXPECT_EQ(std::min(max_rate_bps, 56000),
568 audio_encoder->SetTargetBitrate(57000));
569 }
570 } // namespace
571
572 TEST_F(AudioDecoderIsacFloatTest, SetTargetBitrate) {
573 TestIsacSetTargetBitrates(audio_encoder_.get(), false /* swb */);
574 }
575
530 TEST_F(AudioDecoderIsacSwbTest, EncodeDecode) { 576 TEST_F(AudioDecoderIsacSwbTest, EncodeDecode) {
531 int tolerance = 19757; 577 int tolerance = 19757;
532 double mse = 8.18e6; 578 double mse = 8.18e6;
533 int delay = 160; // Delay from input to output. 579 int delay = 160; // Delay from input to output.
534 EXPECT_TRUE(CodecSupported(kDecoderISACswb)); 580 EXPECT_TRUE(CodecSupported(kDecoderISACswb));
535 EncodeDecodeTest(0, tolerance, mse, delay); 581 EncodeDecodeTest(0, tolerance, mse, delay);
536 ReInitTest(); 582 ReInitTest();
537 EXPECT_FALSE(decoder_->HasDecodePlc()); 583 EXPECT_FALSE(decoder_->HasDecodePlc());
538 } 584 }
539 585
586 TEST_F(AudioDecoderIsacSwbTest, SetTargetBitrate) {
587 TestIsacSetTargetBitrates(audio_encoder_.get(), true /* swb */);
588 }
589
540 // Fails Android ARM64. https://code.google.com/p/webrtc/issues/detail?id=4198 590 // Fails Android ARM64. https://code.google.com/p/webrtc/issues/detail?id=4198
541 #if defined(WEBRTC_ANDROID) && defined(WEBRTC_ARCH_ARM64) 591 #if defined(WEBRTC_ANDROID) && defined(WEBRTC_ARCH_ARM64)
542 #define MAYBE_EncodeDecode DISABLED_EncodeDecode 592 #define MAYBE_EncodeDecode DISABLED_EncodeDecode
543 #else 593 #else
544 #define MAYBE_EncodeDecode EncodeDecode 594 #define MAYBE_EncodeDecode EncodeDecode
545 #endif 595 #endif
546 TEST_F(AudioDecoderIsacFixTest, MAYBE_EncodeDecode) { 596 TEST_F(AudioDecoderIsacFixTest, MAYBE_EncodeDecode) {
547 int tolerance = 11034; 597 int tolerance = 11034;
548 double mse = 3.46e6; 598 double mse = 3.46e6;
549 int delay = 54; // Delay from input to output. 599 int delay = 54; // Delay from input to output.
550 EXPECT_TRUE(CodecSupported(kDecoderISAC)); 600 EXPECT_TRUE(CodecSupported(kDecoderISAC));
551 #ifdef WEBRTC_ANDROID 601 #ifdef WEBRTC_ANDROID
552 static const int kEncodedBytes = 685; 602 static const int kEncodedBytes = 685;
553 #else 603 #else
554 static const int kEncodedBytes = 671; 604 static const int kEncodedBytes = 671;
555 #endif 605 #endif
556 EncodeDecodeTest(kEncodedBytes, tolerance, mse, delay); 606 EncodeDecodeTest(kEncodedBytes, tolerance, mse, delay);
557 ReInitTest(); 607 ReInitTest();
558 EXPECT_FALSE(decoder_->HasDecodePlc()); 608 EXPECT_FALSE(decoder_->HasDecodePlc());
559 } 609 }
560 610
611 TEST_F(AudioDecoderIsacFixTest, SetTargetBitrate) {
612 TestIsacSetTargetBitrates(audio_encoder_.get(), false /* swb */);
613 }
614
561 TEST_F(AudioDecoderG722Test, EncodeDecode) { 615 TEST_F(AudioDecoderG722Test, EncodeDecode) {
562 int tolerance = 6176; 616 int tolerance = 6176;
563 double mse = 238630.0; 617 double mse = 238630.0;
564 int delay = 22; // Delay from input to output. 618 int delay = 22; // Delay from input to output.
565 EXPECT_TRUE(CodecSupported(kDecoderG722)); 619 EXPECT_TRUE(CodecSupported(kDecoderG722));
566 EncodeDecodeTest(data_length_ / 2, tolerance, mse, delay); 620 EncodeDecodeTest(data_length_ / 2, tolerance, mse, delay);
567 ReInitTest(); 621 ReInitTest();
568 EXPECT_FALSE(decoder_->HasDecodePlc()); 622 EXPECT_FALSE(decoder_->HasDecodePlc());
569 } 623 }
570 624
625 namespace {
626 void TestG722SetTargetBitrates(AudioEncoder* audio_encoder, bool stereo) {
627 const int fixed_rate_bps = (stereo ? 128000 : 64000);
628 EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(32000));
629 EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(64000));
630 EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(65000));
631 EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(128000));
632 EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(129000));
633 }
634 } // namespace
635
636 TEST_F(AudioDecoderG722Test, SetTargetBitrate) {
637 TestG722SetTargetBitrates(audio_encoder_.get(), false /* stereo */);
638 }
639
571 TEST_F(AudioDecoderG722StereoTest, CreateAndDestroy) { 640 TEST_F(AudioDecoderG722StereoTest, CreateAndDestroy) {
572 EXPECT_TRUE(CodecSupported(kDecoderG722_2ch)); 641 EXPECT_TRUE(CodecSupported(kDecoderG722_2ch));
573 } 642 }
574 643
575 TEST_F(AudioDecoderG722StereoTest, EncodeDecode) { 644 TEST_F(AudioDecoderG722StereoTest, EncodeDecode) {
576 int tolerance = 6176; 645 int tolerance = 6176;
577 int channel_diff_tolerance = 0; 646 int channel_diff_tolerance = 0;
578 double mse = 238630.0; 647 double mse = 238630.0;
579 int delay = 22; // Delay from input to output. 648 int delay = 22; // Delay from input to output.
580 EXPECT_TRUE(CodecSupported(kDecoderG722_2ch)); 649 EXPECT_TRUE(CodecSupported(kDecoderG722_2ch));
581 EncodeDecodeTest(data_length_, tolerance, mse, delay, channel_diff_tolerance); 650 EncodeDecodeTest(data_length_, tolerance, mse, delay, channel_diff_tolerance);
582 ReInitTest(); 651 ReInitTest();
583 EXPECT_FALSE(decoder_->HasDecodePlc()); 652 EXPECT_FALSE(decoder_->HasDecodePlc());
584 } 653 }
585 654
655 TEST_F(AudioDecoderG722StereoTest, SetTargetBitrate) {
656 TestG722SetTargetBitrates(audio_encoder_.get(), true /* stereo */);
657 }
658
586 TEST_F(AudioDecoderOpusTest, EncodeDecode) { 659 TEST_F(AudioDecoderOpusTest, EncodeDecode) {
587 int tolerance = 6176; 660 int tolerance = 6176;
588 double mse = 238630.0; 661 double mse = 238630.0;
589 int delay = 22; // Delay from input to output. 662 int delay = 22; // Delay from input to output.
590 EXPECT_TRUE(CodecSupported(kDecoderOpus)); 663 EXPECT_TRUE(CodecSupported(kDecoderOpus));
591 EncodeDecodeTest(0, tolerance, mse, delay); 664 EncodeDecodeTest(0, tolerance, mse, delay);
592 ReInitTest(); 665 ReInitTest();
593 EXPECT_FALSE(decoder_->HasDecodePlc()); 666 EXPECT_FALSE(decoder_->HasDecodePlc());
594 } 667 }
595 668
669 namespace {
670 void TestOpusSetTargetBitrates(AudioEncoder* audio_encoder) {
671 EXPECT_EQ(500, audio_encoder->SetTargetBitrate(499));
672 EXPECT_EQ(500, audio_encoder->SetTargetBitrate(500));
673 EXPECT_EQ(32000, audio_encoder->SetTargetBitrate(32000));
674 EXPECT_EQ(512000, audio_encoder->SetTargetBitrate(512000));
675 EXPECT_EQ(512000, audio_encoder->SetTargetBitrate(513000));
676 }
677 } // namespace
678
679 TEST_F(AudioDecoderOpusTest, SetTargetBitrate) {
680 TestOpusSetTargetBitrates(audio_encoder_.get());
681 }
682
596 TEST_F(AudioDecoderOpusStereoTest, EncodeDecode) { 683 TEST_F(AudioDecoderOpusStereoTest, EncodeDecode) {
597 int tolerance = 6176; 684 int tolerance = 6176;
598 int channel_diff_tolerance = 0; 685 int channel_diff_tolerance = 0;
599 double mse = 238630.0; 686 double mse = 238630.0;
600 int delay = 22; // Delay from input to output. 687 int delay = 22; // Delay from input to output.
601 EXPECT_TRUE(CodecSupported(kDecoderOpus_2ch)); 688 EXPECT_TRUE(CodecSupported(kDecoderOpus_2ch));
602 EncodeDecodeTest(0, tolerance, mse, delay, channel_diff_tolerance); 689 EncodeDecodeTest(0, tolerance, mse, delay, channel_diff_tolerance);
603 ReInitTest(); 690 ReInitTest();
604 EXPECT_FALSE(decoder_->HasDecodePlc()); 691 EXPECT_FALSE(decoder_->HasDecodePlc());
605 } 692 }
606 693
694 TEST_F(AudioDecoderOpusStereoTest, SetTargetBitrate) {
695 TestOpusSetTargetBitrates(audio_encoder_.get());
696 }
697
607 TEST(AudioDecoder, CodecSampleRateHz) { 698 TEST(AudioDecoder, CodecSampleRateHz) {
608 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMu)); 699 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMu));
609 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMa)); 700 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMa));
610 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMu_2ch)); 701 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMu_2ch));
611 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMa_2ch)); 702 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMa_2ch));
612 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderILBC)); 703 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderILBC));
613 EXPECT_EQ(16000, CodecSampleRateHz(kDecoderISAC)); 704 EXPECT_EQ(16000, CodecSampleRateHz(kDecoderISAC));
614 EXPECT_EQ(32000, CodecSampleRateHz(kDecoderISACswb)); 705 EXPECT_EQ(32000, CodecSampleRateHz(kDecoderISACswb));
615 EXPECT_EQ(32000, CodecSampleRateHz(kDecoderISACfb)); 706 EXPECT_EQ(32000, CodecSampleRateHz(kDecoderISACfb));
616 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCM16B)); 707 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCM16B));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 EXPECT_TRUE(CodecSupported(kDecoderCNGnb)); 752 EXPECT_TRUE(CodecSupported(kDecoderCNGnb));
662 EXPECT_TRUE(CodecSupported(kDecoderCNGwb)); 753 EXPECT_TRUE(CodecSupported(kDecoderCNGwb));
663 EXPECT_TRUE(CodecSupported(kDecoderCNGswb32kHz)); 754 EXPECT_TRUE(CodecSupported(kDecoderCNGswb32kHz));
664 EXPECT_TRUE(CodecSupported(kDecoderCNGswb48kHz)); 755 EXPECT_TRUE(CodecSupported(kDecoderCNGswb48kHz));
665 EXPECT_TRUE(CodecSupported(kDecoderArbitrary)); 756 EXPECT_TRUE(CodecSupported(kDecoderArbitrary));
666 EXPECT_TRUE(CodecSupported(kDecoderOpus)); 757 EXPECT_TRUE(CodecSupported(kDecoderOpus));
667 EXPECT_TRUE(CodecSupported(kDecoderOpus_2ch)); 758 EXPECT_TRUE(CodecSupported(kDecoderOpus_2ch));
668 } 759 }
669 760
670 } // namespace webrtc 761 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698