diff --git a/resources/audio_coding/neteq4_opus_network_stats.dat.sha1 b/resources/audio_coding/neteq4_opus_network_stats.dat.sha1 new file mode 100644 index 0000000000..6a9e7ee9e9 --- /dev/null +++ b/resources/audio_coding/neteq4_opus_network_stats.dat.sha1 @@ -0,0 +1 @@ +cc9fa62d0a8f46ffebc782aea2610dda67bb5558 \ No newline at end of file diff --git a/resources/audio_coding/neteq4_opus_ref.pcm.sha1 b/resources/audio_coding/neteq4_opus_ref.pcm.sha1 new file mode 100644 index 0000000000..5cecc50d9c --- /dev/null +++ b/resources/audio_coding/neteq4_opus_ref.pcm.sha1 @@ -0,0 +1 @@ +301895f1aaa9cd9eae0f5d04d179d63491d744cc \ No newline at end of file diff --git a/resources/audio_coding/neteq4_opus_ref_win_32.pcm.sha1 b/resources/audio_coding/neteq4_opus_ref_win_32.pcm.sha1 new file mode 100644 index 0000000000..b7cf990697 --- /dev/null +++ b/resources/audio_coding/neteq4_opus_ref_win_32.pcm.sha1 @@ -0,0 +1 @@ +fbad99878c7a26958e755190027c976692708334 \ No newline at end of file diff --git a/resources/audio_coding/neteq4_opus_ref_win_64.pcm.sha1 b/resources/audio_coding/neteq4_opus_ref_win_64.pcm.sha1 new file mode 100644 index 0000000000..b7cf990697 --- /dev/null +++ b/resources/audio_coding/neteq4_opus_ref_win_64.pcm.sha1 @@ -0,0 +1 @@ +fbad99878c7a26958e755190027c976692708334 \ No newline at end of file diff --git a/resources/audio_coding/neteq4_opus_rtcp_stats.dat.sha1 b/resources/audio_coding/neteq4_opus_rtcp_stats.dat.sha1 new file mode 100644 index 0000000000..05570b898f --- /dev/null +++ b/resources/audio_coding/neteq4_opus_rtcp_stats.dat.sha1 @@ -0,0 +1 @@ +e37c797e3de6a64dda88c9ade7a013d022a2e1e0 \ No newline at end of file diff --git a/resources/audio_coding/neteq_opus.rtp.sha1 b/resources/audio_coding/neteq_opus.rtp.sha1 new file mode 100644 index 0000000000..ff5b8fee3a --- /dev/null +++ b/resources/audio_coding/neteq_opus.rtp.sha1 @@ -0,0 +1 @@ +21c8f8aaf9518a629d6c6def87fe6ea1305d5c91 \ No newline at end of file diff --git a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc index 04cef8aa99..b3d6d8c7a7 100644 --- a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc +++ b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc @@ -229,7 +229,7 @@ void RefFiles::ReadFromFileAndCompare( ASSERT_EQ(stats.accelerate_rate, ref_stats.accelerate_rate()); ASSERT_EQ(stats.clockdrift_ppm, ref_stats.clockdrift_ppm()); ASSERT_EQ(stats.added_zero_samples, ref_stats.added_zero_samples()); - ASSERT_EQ(stats.secondary_decoded_rate, 0); + ASSERT_EQ(stats.secondary_decoded_rate, ref_stats.secondary_decoded_rate()); ASSERT_LE(stats.speech_expand_rate, ref_stats.expand_rate()); #else FAIL() << "Reading from reference file requires Proto Buffer."; @@ -279,7 +279,8 @@ class NetEqDecodingTest : public ::testing::Test { static const size_t kBlockSize8kHz = kTimeStepMs * 8; static const size_t kBlockSize16kHz = kTimeStepMs * 16; static const size_t kBlockSize32kHz = kTimeStepMs * 32; - static const size_t kMaxBlockSize = kBlockSize32kHz; + static const size_t kBlockSize48kHz = kTimeStepMs * 48; + static const size_t kMaxBlockSize = kBlockSize48kHz; static const int kInitSampleRateHz = 8000; NetEqDecodingTest(); @@ -380,6 +381,10 @@ void NetEqDecodingTest::LoadDecoders() { // Load iSAC SWB. ASSERT_EQ(0, neteq_->RegisterPayloadType(NetEqDecoder::kDecoderISACswb, "isac-swb", 104)); +#endif +#ifdef WEBRTC_CODEC_OPUS + ASSERT_EQ(0, neteq_->RegisterPayloadType(NetEqDecoder::kDecoderOpus, + "opus", 111)); #endif // Load PCM16B nb. ASSERT_EQ(0, neteq_->RegisterPayloadType(NetEqDecoder::kDecoderPCM16B, @@ -426,7 +431,8 @@ void NetEqDecodingTest::Process(size_t* out_len) { &num_channels, &type)); ASSERT_TRUE((*out_len == kBlockSize8kHz) || (*out_len == kBlockSize16kHz) || - (*out_len == kBlockSize32kHz)); + (*out_len == kBlockSize32kHz) || + (*out_len == kBlockSize48kHz)); output_sample_rate_ = static_cast(*out_len / 10 * 1000); EXPECT_EQ(output_sample_rate_, neteq_->last_output_sample_rate_hz()); @@ -511,7 +517,7 @@ void NetEqDecodingTest::PopulateCng(int frame_index, } #if !defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID) && \ - defined(WEBRTC_NETEQ_UNITTEST_BITEXACT) && \ + defined(WEBRTC_NETEQ_UNITTEST_BITEXACT) && \ (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)) && \ defined(WEBRTC_CODEC_ILBC) && defined(WEBRTC_CODEC_G722) #define MAYBE_TestBitExactness TestBitExactness @@ -548,6 +554,34 @@ TEST_F(NetEqDecodingTest, MAYBE_TestBitExactness) { } } +#if !defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID) && \ + defined(WEBRTC_NETEQ_UNITTEST_BITEXACT) && \ + defined(WEBRTC_CODEC_OPUS) +#define MAYBE_TestOpusBitExactness TestOpusBitExactness +#else +#define MAYBE_TestOpusBitExactness DISABLED_TestOpusBitExactness +#endif +TEST_F(NetEqDecodingTest, MAYBE_TestOpusBitExactness) { + const std::string input_rtp_file = + webrtc::test::ResourcePath("audio_coding/neteq_opus", "rtp"); + const std::string input_ref_file = + webrtc::test::ResourcePath("audio_coding/neteq4_opus_ref", "pcm"); + const std::string network_stat_ref_file = + webrtc::test::ResourcePath("audio_coding/neteq4_opus_network_stats", + "dat"); + const std::string rtcp_stat_ref_file = + webrtc::test::ResourcePath("audio_coding/neteq4_opus_rtcp_stats", "dat"); + + if (FLAGS_gen_ref) { + DecodeAndCompare(input_rtp_file, "", "", ""); + } else { + DecodeAndCompare(input_rtp_file, + input_ref_file, + network_stat_ref_file, + rtcp_stat_ref_file); + } +} + // Use fax mode to avoid time-scaling. This is to simplify the testing of // packet waiting times in the packet buffer. class NetEqDecodingTestFaxMode : public NetEqDecodingTest {