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

Unified Diff: webrtc/modules/audio_coding/neteq/neteq_unittest.cc

Issue 1515113002: Adding bit exactness test for Opus decoding in NetEq. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: adding ref file for win (since non-bit-exact) Created 5 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « resources/audio_coding/neteq_opus.rtp.sha1 ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/audio_coding/neteq/neteq_unittest.cc
diff --git a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
index 04cef8aa99e7f1de8f2fbce8a7f3004aeaada010..b3d6d8c7a7aabe390762ef6988265d830671a3ea 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();
@@ -381,6 +382,10 @@ void NetEqDecodingTest::LoadDecoders() {
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,
"pcm16-nb", 93));
@@ -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<int>(*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 {
« no previous file with comments | « resources/audio_coding/neteq_opus.rtp.sha1 ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698