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

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: Fixing GN compile 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
« no previous file with comments | « webrtc/modules/audio_coding/codecs/red/audio_encoder_copy_red.cc ('k') | 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) 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 int SetAndGetTargetBitrate(AudioEncoder* audio_encoder, int rate) {
490 audio_encoder->SetTargetBitrate(rate);
491 return audio_encoder->GetTargetBitrate();
492 }
493 void TestSetAndGetTargetBitratesWithFixedCodec(AudioEncoder* audio_encoder,
494 int fixed_rate) {
495 EXPECT_EQ(fixed_rate, SetAndGetTargetBitrate(audio_encoder, 32000));
496 EXPECT_EQ(fixed_rate, SetAndGetTargetBitrate(audio_encoder, fixed_rate - 1));
497 EXPECT_EQ(fixed_rate, SetAndGetTargetBitrate(audio_encoder, fixed_rate));
498 EXPECT_EQ(fixed_rate, SetAndGetTargetBitrate(audio_encoder, fixed_rate + 1));
499 }
500 } // namespace
501
502 TEST_F(AudioDecoderPcmUTest, SetTargetBitrate) {
503 TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(), 64000);
504 }
505
488 TEST_F(AudioDecoderPcmATest, EncodeDecode) { 506 TEST_F(AudioDecoderPcmATest, EncodeDecode) {
489 int tolerance = 308; 507 int tolerance = 308;
490 double mse = 1931.0; 508 double mse = 1931.0;
491 EXPECT_TRUE(CodecSupported(kDecoderPCMa)); 509 EXPECT_TRUE(CodecSupported(kDecoderPCMa));
492 EncodeDecodeTest(data_length_, tolerance, mse); 510 EncodeDecodeTest(data_length_, tolerance, mse);
493 ReInitTest(); 511 ReInitTest();
494 EXPECT_FALSE(decoder_->HasDecodePlc()); 512 EXPECT_FALSE(decoder_->HasDecodePlc());
495 } 513 }
496 514
515 TEST_F(AudioDecoderPcmATest, SetTargetBitrate) {
516 TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(), 64000);
517 }
518
497 TEST_F(AudioDecoderPcm16BTest, EncodeDecode) { 519 TEST_F(AudioDecoderPcm16BTest, EncodeDecode) {
498 int tolerance = 0; 520 int tolerance = 0;
499 double mse = 0.0; 521 double mse = 0.0;
500 EXPECT_TRUE(CodecSupported(kDecoderPCM16B)); 522 EXPECT_TRUE(CodecSupported(kDecoderPCM16B));
501 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bwb)); 523 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bwb));
502 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bswb32kHz)); 524 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bswb32kHz));
503 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bswb48kHz)); 525 EXPECT_TRUE(CodecSupported(kDecoderPCM16Bswb48kHz));
504 EncodeDecodeTest(2 * data_length_, tolerance, mse); 526 EncodeDecodeTest(2 * data_length_, tolerance, mse);
505 ReInitTest(); 527 ReInitTest();
506 EXPECT_FALSE(decoder_->HasDecodePlc()); 528 EXPECT_FALSE(decoder_->HasDecodePlc());
507 } 529 }
508 530
531 TEST_F(AudioDecoderPcm16BTest, SetTargetBitrate) {
532 TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(),
533 codec_input_rate_hz_ * 16);
534 }
535
509 TEST_F(AudioDecoderIlbcTest, EncodeDecode) { 536 TEST_F(AudioDecoderIlbcTest, EncodeDecode) {
510 int tolerance = 6808; 537 int tolerance = 6808;
511 double mse = 2.13e6; 538 double mse = 2.13e6;
512 int delay = 80; // Delay from input to output. 539 int delay = 80; // Delay from input to output.
513 EXPECT_TRUE(CodecSupported(kDecoderILBC)); 540 EXPECT_TRUE(CodecSupported(kDecoderILBC));
514 EncodeDecodeTest(500, tolerance, mse, delay); 541 EncodeDecodeTest(500, tolerance, mse, delay);
515 ReInitTest(); 542 ReInitTest();
516 EXPECT_TRUE(decoder_->HasDecodePlc()); 543 EXPECT_TRUE(decoder_->HasDecodePlc());
517 DecodePlcTest(); 544 DecodePlcTest();
518 } 545 }
519 546
547 TEST_F(AudioDecoderIlbcTest, SetTargetBitrate) {
548 TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(), 13333);
549 }
550
520 TEST_F(AudioDecoderIsacFloatTest, EncodeDecode) { 551 TEST_F(AudioDecoderIsacFloatTest, EncodeDecode) {
521 int tolerance = 3399; 552 int tolerance = 3399;
522 double mse = 434951.0; 553 double mse = 434951.0;
523 int delay = 48; // Delay from input to output. 554 int delay = 48; // Delay from input to output.
524 EXPECT_TRUE(CodecSupported(kDecoderISAC)); 555 EXPECT_TRUE(CodecSupported(kDecoderISAC));
525 EncodeDecodeTest(0, tolerance, mse, delay); 556 EncodeDecodeTest(0, tolerance, mse, delay);
526 ReInitTest(); 557 ReInitTest();
527 EXPECT_FALSE(decoder_->HasDecodePlc()); 558 EXPECT_FALSE(decoder_->HasDecodePlc());
528 } 559 }
529 560
561 TEST_F(AudioDecoderIsacFloatTest, SetTargetBitrate) {
562 TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(), 32000);
563 }
564
530 TEST_F(AudioDecoderIsacSwbTest, EncodeDecode) { 565 TEST_F(AudioDecoderIsacSwbTest, EncodeDecode) {
531 int tolerance = 19757; 566 int tolerance = 19757;
532 double mse = 8.18e6; 567 double mse = 8.18e6;
533 int delay = 160; // Delay from input to output. 568 int delay = 160; // Delay from input to output.
534 EXPECT_TRUE(CodecSupported(kDecoderISACswb)); 569 EXPECT_TRUE(CodecSupported(kDecoderISACswb));
535 EncodeDecodeTest(0, tolerance, mse, delay); 570 EncodeDecodeTest(0, tolerance, mse, delay);
536 ReInitTest(); 571 ReInitTest();
537 EXPECT_FALSE(decoder_->HasDecodePlc()); 572 EXPECT_FALSE(decoder_->HasDecodePlc());
538 } 573 }
539 574
575 TEST_F(AudioDecoderIsacSwbTest, SetTargetBitrate) {
576 TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(), 32000);
577 }
578
540 // Fails Android ARM64. https://code.google.com/p/webrtc/issues/detail?id=4198 579 // Fails Android ARM64. https://code.google.com/p/webrtc/issues/detail?id=4198
541 #if defined(WEBRTC_ANDROID) && defined(WEBRTC_ARCH_ARM64) 580 #if defined(WEBRTC_ANDROID) && defined(WEBRTC_ARCH_ARM64)
542 #define MAYBE_EncodeDecode DISABLED_EncodeDecode 581 #define MAYBE_EncodeDecode DISABLED_EncodeDecode
543 #else 582 #else
544 #define MAYBE_EncodeDecode EncodeDecode 583 #define MAYBE_EncodeDecode EncodeDecode
545 #endif 584 #endif
546 TEST_F(AudioDecoderIsacFixTest, MAYBE_EncodeDecode) { 585 TEST_F(AudioDecoderIsacFixTest, MAYBE_EncodeDecode) {
547 int tolerance = 11034; 586 int tolerance = 11034;
548 double mse = 3.46e6; 587 double mse = 3.46e6;
549 int delay = 54; // Delay from input to output. 588 int delay = 54; // Delay from input to output.
550 EXPECT_TRUE(CodecSupported(kDecoderISAC)); 589 EXPECT_TRUE(CodecSupported(kDecoderISAC));
551 #ifdef WEBRTC_ANDROID 590 #ifdef WEBRTC_ANDROID
552 static const int kEncodedBytes = 685; 591 static const int kEncodedBytes = 685;
553 #else 592 #else
554 static const int kEncodedBytes = 671; 593 static const int kEncodedBytes = 671;
555 #endif 594 #endif
556 EncodeDecodeTest(kEncodedBytes, tolerance, mse, delay); 595 EncodeDecodeTest(kEncodedBytes, tolerance, mse, delay);
557 ReInitTest(); 596 ReInitTest();
558 EXPECT_FALSE(decoder_->HasDecodePlc()); 597 EXPECT_FALSE(decoder_->HasDecodePlc());
559 } 598 }
560 599
600 TEST_F(AudioDecoderIsacFixTest, SetTargetBitrate) {
601 TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(), 32000);
602 }
603
561 TEST_F(AudioDecoderG722Test, EncodeDecode) { 604 TEST_F(AudioDecoderG722Test, EncodeDecode) {
562 int tolerance = 6176; 605 int tolerance = 6176;
563 double mse = 238630.0; 606 double mse = 238630.0;
564 int delay = 22; // Delay from input to output. 607 int delay = 22; // Delay from input to output.
565 EXPECT_TRUE(CodecSupported(kDecoderG722)); 608 EXPECT_TRUE(CodecSupported(kDecoderG722));
566 EncodeDecodeTest(data_length_ / 2, tolerance, mse, delay); 609 EncodeDecodeTest(data_length_ / 2, tolerance, mse, delay);
567 ReInitTest(); 610 ReInitTest();
568 EXPECT_FALSE(decoder_->HasDecodePlc()); 611 EXPECT_FALSE(decoder_->HasDecodePlc());
569 } 612 }
570 613
614 TEST_F(AudioDecoderG722Test, SetTargetBitrate) {
615 TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(), 64000);
616 }
617
571 TEST_F(AudioDecoderG722StereoTest, CreateAndDestroy) { 618 TEST_F(AudioDecoderG722StereoTest, CreateAndDestroy) {
572 EXPECT_TRUE(CodecSupported(kDecoderG722_2ch)); 619 EXPECT_TRUE(CodecSupported(kDecoderG722_2ch));
573 } 620 }
574 621
575 TEST_F(AudioDecoderG722StereoTest, EncodeDecode) { 622 TEST_F(AudioDecoderG722StereoTest, EncodeDecode) {
576 int tolerance = 6176; 623 int tolerance = 6176;
577 int channel_diff_tolerance = 0; 624 int channel_diff_tolerance = 0;
578 double mse = 238630.0; 625 double mse = 238630.0;
579 int delay = 22; // Delay from input to output. 626 int delay = 22; // Delay from input to output.
580 EXPECT_TRUE(CodecSupported(kDecoderG722_2ch)); 627 EXPECT_TRUE(CodecSupported(kDecoderG722_2ch));
581 EncodeDecodeTest(data_length_, tolerance, mse, delay, channel_diff_tolerance); 628 EncodeDecodeTest(data_length_, tolerance, mse, delay, channel_diff_tolerance);
582 ReInitTest(); 629 ReInitTest();
583 EXPECT_FALSE(decoder_->HasDecodePlc()); 630 EXPECT_FALSE(decoder_->HasDecodePlc());
584 } 631 }
585 632
633 TEST_F(AudioDecoderG722StereoTest, SetTargetBitrate) {
634 TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(), 128000);
635 }
636
586 TEST_F(AudioDecoderOpusTest, EncodeDecode) { 637 TEST_F(AudioDecoderOpusTest, EncodeDecode) {
587 int tolerance = 6176; 638 int tolerance = 6176;
588 double mse = 238630.0; 639 double mse = 238630.0;
589 int delay = 22; // Delay from input to output. 640 int delay = 22; // Delay from input to output.
590 EXPECT_TRUE(CodecSupported(kDecoderOpus)); 641 EXPECT_TRUE(CodecSupported(kDecoderOpus));
591 EncodeDecodeTest(0, tolerance, mse, delay); 642 EncodeDecodeTest(0, tolerance, mse, delay);
592 ReInitTest(); 643 ReInitTest();
593 EXPECT_FALSE(decoder_->HasDecodePlc()); 644 EXPECT_FALSE(decoder_->HasDecodePlc());
594 } 645 }
595 646
647 namespace {
648 void TestOpusSetTargetBitrates(AudioEncoder* audio_encoder) {
649 EXPECT_EQ(500, SetAndGetTargetBitrate(audio_encoder, 499));
650 EXPECT_EQ(500, SetAndGetTargetBitrate(audio_encoder, 500));
651 EXPECT_EQ(32000, SetAndGetTargetBitrate(audio_encoder, 32000));
652 EXPECT_EQ(512000, SetAndGetTargetBitrate(audio_encoder, 512000));
653 EXPECT_EQ(512000, SetAndGetTargetBitrate(audio_encoder, 513000));
654 }
655 } // namespace
656
657 TEST_F(AudioDecoderOpusTest, SetTargetBitrate) {
658 TestOpusSetTargetBitrates(audio_encoder_.get());
659 }
660
596 TEST_F(AudioDecoderOpusStereoTest, EncodeDecode) { 661 TEST_F(AudioDecoderOpusStereoTest, EncodeDecode) {
597 int tolerance = 6176; 662 int tolerance = 6176;
598 int channel_diff_tolerance = 0; 663 int channel_diff_tolerance = 0;
599 double mse = 238630.0; 664 double mse = 238630.0;
600 int delay = 22; // Delay from input to output. 665 int delay = 22; // Delay from input to output.
601 EXPECT_TRUE(CodecSupported(kDecoderOpus_2ch)); 666 EXPECT_TRUE(CodecSupported(kDecoderOpus_2ch));
602 EncodeDecodeTest(0, tolerance, mse, delay, channel_diff_tolerance); 667 EncodeDecodeTest(0, tolerance, mse, delay, channel_diff_tolerance);
603 ReInitTest(); 668 ReInitTest();
604 EXPECT_FALSE(decoder_->HasDecodePlc()); 669 EXPECT_FALSE(decoder_->HasDecodePlc());
605 } 670 }
606 671
672 TEST_F(AudioDecoderOpusStereoTest, SetTargetBitrate) {
673 TestOpusSetTargetBitrates(audio_encoder_.get());
674 }
675
607 TEST(AudioDecoder, CodecSampleRateHz) { 676 TEST(AudioDecoder, CodecSampleRateHz) {
608 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMu)); 677 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMu));
609 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMa)); 678 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMa));
610 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMu_2ch)); 679 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMu_2ch));
611 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMa_2ch)); 680 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMa_2ch));
612 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderILBC)); 681 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderILBC));
613 EXPECT_EQ(16000, CodecSampleRateHz(kDecoderISAC)); 682 EXPECT_EQ(16000, CodecSampleRateHz(kDecoderISAC));
614 EXPECT_EQ(32000, CodecSampleRateHz(kDecoderISACswb)); 683 EXPECT_EQ(32000, CodecSampleRateHz(kDecoderISACswb));
615 EXPECT_EQ(32000, CodecSampleRateHz(kDecoderISACfb)); 684 EXPECT_EQ(32000, CodecSampleRateHz(kDecoderISACfb));
616 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCM16B)); 685 EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCM16B));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 EXPECT_TRUE(CodecSupported(kDecoderCNGnb)); 730 EXPECT_TRUE(CodecSupported(kDecoderCNGnb));
662 EXPECT_TRUE(CodecSupported(kDecoderCNGwb)); 731 EXPECT_TRUE(CodecSupported(kDecoderCNGwb));
663 EXPECT_TRUE(CodecSupported(kDecoderCNGswb32kHz)); 732 EXPECT_TRUE(CodecSupported(kDecoderCNGswb32kHz));
664 EXPECT_TRUE(CodecSupported(kDecoderCNGswb48kHz)); 733 EXPECT_TRUE(CodecSupported(kDecoderCNGswb48kHz));
665 EXPECT_TRUE(CodecSupported(kDecoderArbitrary)); 734 EXPECT_TRUE(CodecSupported(kDecoderArbitrary));
666 EXPECT_TRUE(CodecSupported(kDecoderOpus)); 735 EXPECT_TRUE(CodecSupported(kDecoderOpus));
667 EXPECT_TRUE(CodecSupported(kDecoderOpus_2ch)); 736 EXPECT_TRUE(CodecSupported(kDecoderOpus_2ch));
668 } 737 }
669 738
670 } // namespace webrtc 739 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/codecs/red/audio_encoder_copy_red.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698