OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |