NetEq: Update CNG code to accommodate 48 kHz sample rate
Checksums were updated for NetEq and ACM bitexactness tests (after
verifying the audio quality).
BUG=webrtc:5447
Review-Url: https://codereview.webrtc.org/2266293005
Cr-Commit-Position: refs/heads/master@{#13928}
diff --git a/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest_oldapi.cc b/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest_oldapi.cc
index d95fcf8..6220c05 100644
--- a/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest_oldapi.cc
+++ b/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest_oldapi.cc
@@ -958,34 +958,34 @@
#if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)) && \
defined(WEBRTC_CODEC_ILBC) && defined(WEBRTC_CODEC_G722)
TEST_F(AcmReceiverBitExactnessOldApi, 8kHzOutput) {
- Run(8000, PlatformChecksum("86f0e58421dafe3471e1bcd62316174e",
- "e2c2176b822f109eab2c3317ff1f3a89",
- "9c1058831bef8836d5880f86f03f02cd",
- "7294944a869a39085ae69278dca875ad"),
+ Run(8000, PlatformChecksum("dce4890259e9ded50f472455aa470a6f",
+ "1c4ada78b12612147f3026920f8dcc14",
+ "d804791edf2d00be2bc31c81a47368d4",
+ "b2611f7323ab1209d5056399d0babbf5"),
std::vector<ExternalDecoder>());
}
TEST_F(AcmReceiverBitExactnessOldApi, 16kHzOutput) {
- Run(16000, PlatformChecksum("0b895074ede8d93ff7d4b03e48ff4353",
- "9b92ee1731bc07e7a802c46883551029",
- "1a29721666a594cc56688b442790d0f9",
- "c061a9486003d0c096504905521d0fe7"),
+ Run(16000, PlatformChecksum("27356bddffaa42b5c841b49aa3a070c5",
+ "5667d1872fc351244092ae995e5a5b32",
+ "53f5dc8088148479ca112c4c6d0e91cb",
+ "4061a876d64d6cec5a38450acf4f245d"),
std::vector<ExternalDecoder>());
}
TEST_F(AcmReceiverBitExactnessOldApi, 32kHzOutput) {
- Run(32000, PlatformChecksum("ed620557bab00d588db0af699dc05df9",
- "9472cfaeba10282187a6376aeddba347",
- "0071b9962de77b1d71ecd0a0e5accf45",
- "c6cca0a4dd27bb77505343a15ea13c77"),
+ Run(32000, PlatformChecksum("eb326547e83292305423b0a7ea57fea1",
+ "be7fc3140e6b5188c2e5fae0a394543b",
+ "eab9a0bff17320d6457d04f4c56563c6",
+ "b60241ef0bac4a75f66eead04e71bb12"),
std::vector<ExternalDecoder>());
}
TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutput) {
- Run(48000, PlatformChecksum("e68904bd63da1bad4b00f4bd221f2325",
- "3418d41ee693f8fa6d5878de5a8c95d9",
- "861e65072b1a10eec56ffde10c99bbce",
- "244bafe12206b7e26276ff7c49fc1795"),
+ Run(48000, PlatformChecksum("7eb79ea39b68472a5b04cf9a56e49cda",
+ "f8cdd6e018688b2fff25c9b865bebdbb",
+ "2d18f0f06e7e2fc63b74d06e3c58067f",
+ "81c3e4d24ebec23ca48f42fbaec4aba0"),
std::vector<ExternalDecoder>());
}
@@ -1043,10 +1043,10 @@
std::vector<ExternalDecoder> external_decoders;
external_decoders.push_back(ed);
- Run(48000, PlatformChecksum("e68904bd63da1bad4b00f4bd221f2325",
- "3418d41ee693f8fa6d5878de5a8c95d9",
- "861e65072b1a10eec56ffde10c99bbce",
- "244bafe12206b7e26276ff7c49fc1795"),
+ Run(48000, PlatformChecksum("7eb79ea39b68472a5b04cf9a56e49cda",
+ "f8cdd6e018688b2fff25c9b865bebdbb",
+ "2d18f0f06e7e2fc63b74d06e3c58067f",
+ "81c3e4d24ebec23ca48f42fbaec4aba0"),
external_decoders);
EXPECT_CALL(mock_decoder, Die());
diff --git a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
index 976c685..b63d7c1 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
@@ -461,16 +461,16 @@
webrtc::test::ResourcePath("audio_coding/neteq_universal_new", "rtp");
const std::string output_checksum = PlatformChecksum(
- "472ebe1126f41fdb6b5c63c87f625a52e7604e49",
- "36f6fc87c05de077e998173b46b83524de5e8fc2",
- "472ebe1126f41fdb6b5c63c87f625a52e7604e49",
- "f9749813dbc3fb59dae761de518fec65b8407c5b");
+ "acd33f5c73625c1529c412ad59b5565132826f1b",
+ "1a2e82a0410421c1d1d3eb0615334db5e2c63784",
+ "acd33f5c73625c1529c412ad59b5565132826f1b",
+ "52797b781758a1d2303140b80b9c5030c9093d6b");
const std::string network_stats_checksum = PlatformChecksum(
- "2cf380a05ee07080bd72471e8ec7777a39644ec9",
- "f50795e25ec2bab2d418c694ab088012776fd450",
- "2cf380a05ee07080bd72471e8ec7777a39644ec9",
- "2cf380a05ee07080bd72471e8ec7777a39644ec9");
+ "9c5bb9e74a583be89313b158a19ea10d41bf9de6",
+ "e948ec65cf18852ba2a197189a3186635db34c3b",
+ "9c5bb9e74a583be89313b158a19ea10d41bf9de6",
+ "9c5bb9e74a583be89313b158a19ea10d41bf9de6");
const std::string rtcp_stats_checksum = PlatformChecksum(
"b8880bf9fed2487efbddcb8d94b9937a29ae521d",
diff --git a/webrtc/modules/audio_coding/neteq/normal.cc b/webrtc/modules/audio_coding/neteq/normal.cc
index f99b3f2..7316918 100644
--- a/webrtc/modules/audio_coding/neteq/normal.cc
+++ b/webrtc/modules/audio_coding/neteq/normal.cc
@@ -145,14 +145,15 @@
}
} else if (last_mode == kModeRfc3389Cng) {
assert(output->Channels() == 1); // Not adapted for multi-channel yet.
- static const size_t kCngLength = 32;
+ static const size_t kCngLength = 48;
+ RTC_DCHECK_LE(static_cast<size_t>(8 * fs_mult), kCngLength);
int16_t cng_output[kCngLength];
// Reset mute factor and start up fresh.
external_mute_factor_array[0] = 16384;
ComfortNoiseDecoder* cng_decoder = decoder_database_->GetActiveCngDecoder();
if (cng_decoder) {
- // Generate long enough for 32kHz.
+ // Generate long enough for 48kHz.
if (!cng_decoder->Generate(cng_output, 0)) {
// Error returned; set return vector to all zeros.
memset(cng_output, 0, sizeof(cng_output));