From d723da194338d0ee73813e37dd5e85696a5ac039 Mon Sep 17 00:00:00 2001 From: Jakob Ivarsson Date: Fri, 15 Jan 2021 17:44:56 +0100 Subject: [PATCH] Reland "Default enable delay adaptation during DTX." This is a reland of 59bdcbe3c97ac52f73b6b18aaed8db84d42b233f Original change's description: > Default enable delay adaptation during DTX. > > Bug: webrtc:10736 > Change-Id: I5dcc431211c6c1c89b4d7d1ab07b23d63c0550d3 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/201385 > Reviewed-by: Ivo Creusen > Commit-Queue: Jakob Ivarsson > Cr-Commit-Position: refs/heads/master@{#32999} Bug: webrtc:10736 Change-Id: I8fc83e8b3fa6c122dcf706f0cae1b1a2e28555aa Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202033 Reviewed-by: Ivo Creusen Commit-Queue: Jakob Ivarsson Cr-Commit-Position: refs/heads/master@{#33004} --- .../acm2/audio_coding_module_unittest.cc | 50 +++++++++---------- modules/audio_coding/neteq/decision_logic.cc | 4 +- .../audio_coding/neteq/neteq_impl_unittest.cc | 18 +++---- modules/audio_coding/neteq/neteq_unittest.cc | 34 ++++++------- 4 files changed, 53 insertions(+), 53 deletions(-) diff --git a/modules/audio_coding/acm2/audio_coding_module_unittest.cc b/modules/audio_coding/acm2/audio_coding_module_unittest.cc index 590dc30f47..a83d9689cb 100644 --- a/modules/audio_coding/acm2/audio_coding_module_unittest.cc +++ b/modules/audio_coding/acm2/audio_coding_module_unittest.cc @@ -939,58 +939,58 @@ class AcmReceiverBitExactnessOldApi : public ::testing::Test { defined(WEBRTC_CODEC_ILBC) TEST_F(AcmReceiverBitExactnessOldApi, 8kHzOutput) { std::string others_checksum_reference = - GetCPUInfo(kAVX2) != 0 ? "1d7b784031599e2c01a3f575f8439f2f" - : "c119fda4ea2c119ff2a720fd0c289071"; + GetCPUInfo(kAVX2) != 0 ? "e0c966d7b8c36ff60167988fa35d33e0" + : "7d8f6b84abd1e57ec010a53bc2130652"; std::string win64_checksum_reference = GetCPUInfo(kAVX2) != 0 ? "405a50f0bcb8827e20aa944299fc59f6" - : "38e70d4e186f8e1a56b929fafcb7c379"; + : "0ed5830930f5527a01bbec0ba11f8541"; Run(8000, PlatformChecksum(others_checksum_reference, win64_checksum_reference, - "3b03e41731e1cef5ae2b9f9618660b42", + "b892ed69c38b21b16c132ec2ce03aa7b", "4598140b5e4f7ee66c5adad609e65a3e", - "da7e76687c8c0a9509cd1d57ee1aba3b")); + "5fec8d770778ef7969ec98c56d9eb10f")); } TEST_F(AcmReceiverBitExactnessOldApi, 16kHzOutput) { std::string others_checksum_reference = - GetCPUInfo(kAVX2) != 0 ? "8884d910e443c244d8593c2e3cef5e63" - : "36dc8c0532ba0efa099e2b6a689cde40"; + GetCPUInfo(kAVX2) != 0 ? "a63c578e1195c8420f453962c6d8519c" + : "6bac83762c1306b932cd25a560155681"; std::string win64_checksum_reference = GetCPUInfo(kAVX2) != 0 ? "58fd62a5c49ee513f9fa6fe7dbf62c97" - : "07e4b388168e273fa19da0a167aff782"; + : "0509cf0672f543efb4b050e8cffefb1d"; Run(16000, PlatformChecksum(others_checksum_reference, win64_checksum_reference, - "06b08d14a72f6e7c72840b1cc9ad204d", + "3cea9abbeabbdea9a79719941b241af5", "f2aad418af974a3b1694d5ae5cc2c3c7", - "1d5f9a93f3975e7e491373b81eb5fd14")); + "9d4b92c31c00e321a4cff29ad002d6a2")); } TEST_F(AcmReceiverBitExactnessOldApi, 32kHzOutput) { std::string others_checksum_reference = - GetCPUInfo(kAVX2) != 0 ? "73f4fe21996c0af495e2c47e3708e519" - : "c848ce9002d3825056a1eac2a067c0d3"; + GetCPUInfo(kAVX2) != 0 ? "8775ce387f44dc5ff4a26da295d5ee7c" + : "e319222ca47733709f90fdf33c8574db"; std::string win64_checksum_reference = GetCPUInfo(kAVX2) != 0 ? "04ce6a1dac5ffdd8438d804623d0132f" - : "0e705f6844c75fd57a84734f7c30af87"; + : "39a4a7a1c455b35baeffb9fd193d7858"; Run(32000, PlatformChecksum(others_checksum_reference, win64_checksum_reference, - "c18e98e5701ec91bba5c026b720d1790", + "4df55b3b62bcbf4328786d474ae87f61", "100869c8dcde51346c2073e52a272d98", - "e35df943bfa3ca32e86b26bf1e37ed8f")); + "ff58d3153d2780a3df6bc2068844cb2d")); } TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutput) { std::string others_checksum_reference = - GetCPUInfo(kAVX2) != 0 ? "884243f7e1476931e93eda5de88d1326" - : "ba0f66d538487bba377e721cfac62d1e"; + GetCPUInfo(kAVX2) != 0 ? "7a55700b7ca9aa60237db58b33e55606" + : "57d1d316c88279f4f3da3511665069a9"; std::string win64_checksum_reference = GetCPUInfo(kAVX2) != 0 ? "f59833d9b0924f4b0704707dd3589f80" - : "6a480541fb86faa95c7563b9de08104d"; + : "74cbe7345e2b6b45c1e455a5d1e921ca"; Run(48000, PlatformChecksum(others_checksum_reference, win64_checksum_reference, - "30e617e4b3c9ba1979d1b2e8eba3519b", + "f52bc7bf0f499c9da25932fdf176c4ec", "bd44bf97e7899186532f91235cef444d", - "90158462a1853b1de50873eebd68dba7")); + "364d403dae55d73cd69e6dbd6b723a4d")); } TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutputExternalDecoder) { @@ -1069,16 +1069,16 @@ TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutputExternalDecoder) { rtc::scoped_refptr> factory( new rtc::RefCountedObject); std::string others_checksum_reference = - GetCPUInfo(kAVX2) != 0 ? "884243f7e1476931e93eda5de88d1326" - : "ba0f66d538487bba377e721cfac62d1e"; + GetCPUInfo(kAVX2) != 0 ? "7a55700b7ca9aa60237db58b33e55606" + : "57d1d316c88279f4f3da3511665069a9"; std::string win64_checksum_reference = GetCPUInfo(kAVX2) != 0 ? "f59833d9b0924f4b0704707dd3589f80" - : "6a480541fb86faa95c7563b9de08104d"; + : "74cbe7345e2b6b45c1e455a5d1e921ca"; Run(48000, PlatformChecksum(others_checksum_reference, win64_checksum_reference, - "30e617e4b3c9ba1979d1b2e8eba3519b", + "f52bc7bf0f499c9da25932fdf176c4ec", "bd44bf97e7899186532f91235cef444d", - "90158462a1853b1de50873eebd68dba7"), + "364d403dae55d73cd69e6dbd6b723a4d"), factory, [](AudioCodingModule* acm) { acm->SetReceiveCodecs({{0, {"MockPCMu", 8000, 1}}, {103, {"ISAC", 16000, 1}}, diff --git a/modules/audio_coding/neteq/decision_logic.cc b/modules/audio_coding/neteq/decision_logic.cc index 266e675148..cb6daf062e 100644 --- a/modules/audio_coding/neteq/decision_logic.cc +++ b/modules/audio_coding/neteq/decision_logic.cc @@ -50,8 +50,8 @@ DecisionLogic::DecisionLogic( disallow_time_stretching_(!config.allow_time_stretching), timescale_countdown_( tick_timer_->GetNewCountdown(kMinTimescaleInterval + 1)), - estimate_dtx_delay_("estimate_dtx_delay", false), - time_stretch_cn_("time_stretch_cn", false), + estimate_dtx_delay_("estimate_dtx_delay", true), + time_stretch_cn_("time_stretch_cn", true), target_level_window_ms_("target_level_window", kDefaultTargetLevelWindowMs, 0, diff --git a/modules/audio_coding/neteq/neteq_impl_unittest.cc b/modules/audio_coding/neteq/neteq_impl_unittest.cc index c66a0e25f9..a073d82295 100644 --- a/modules/audio_coding/neteq/neteq_impl_unittest.cc +++ b/modules/audio_coding/neteq/neteq_impl_unittest.cc @@ -987,15 +987,6 @@ TEST_F(NetEqImplTest, CodecInternalCng) { EXPECT_TRUE(neteq_->RegisterPayloadType(kPayloadType, SdpAudioFormat("opus", 48000, 2))); - // Insert one packet (decoder will return speech). - EXPECT_EQ(NetEq::kOK, neteq_->InsertPacket(rtp_header, payload)); - - // Insert second packet (decoder will return CNG). - payload[0] = 1; - rtp_header.sequenceNumber++; - rtp_header.timestamp += kPayloadLengthSamples; - EXPECT_EQ(NetEq::kOK, neteq_->InsertPacket(rtp_header, payload)); - const size_t kMaxOutputSize = static_cast(10 * kSampleRateKhz); AudioFrame output; AudioFrame::SpeechType expected_type[8] = { @@ -1012,11 +1003,20 @@ TEST_F(NetEqImplTest, CodecInternalCng) { 50 * kSampleRateKhz, 10 * kSampleRateKhz}; + // Insert one packet (decoder will return speech). + EXPECT_EQ(NetEq::kOK, neteq_->InsertPacket(rtp_header, payload)); + bool muted; EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); absl::optional last_timestamp = neteq_->GetPlayoutTimestamp(); ASSERT_TRUE(last_timestamp); + // Insert second packet (decoder will return CNG). + payload[0] = 1; + rtp_header.sequenceNumber++; + rtp_header.timestamp += kPayloadLengthSamples; + EXPECT_EQ(NetEq::kOK, neteq_->InsertPacket(rtp_header, payload)); + // Lambda for verifying the timestamps. auto verify_timestamp = [&last_timestamp, &expected_timestamp_increment]( absl::optional ts, size_t i) { diff --git a/modules/audio_coding/neteq/neteq_unittest.cc b/modules/audio_coding/neteq/neteq_unittest.cc index c6d514d827..750de2d272 100644 --- a/modules/audio_coding/neteq/neteq_unittest.cc +++ b/modules/audio_coding/neteq/neteq_unittest.cc @@ -84,16 +84,16 @@ TEST_F(NetEqDecodingTest, MAYBE_TestBitExactness) { webrtc::test::ResourcePath("audio_coding/neteq_universal_new", "rtp"); const std::string output_checksum = - PlatformChecksum("68ec266d2d152dfc0d938484e7936f6af4f803e3", - "1c243feb35e3e9ab37039eddf5b3c3ecfca3c60c", "not used", - "68ec266d2d152dfc0d938484e7936f6af4f803e3", - "f68c546a43bb25743297c9c0c9027e8424b8e10b"); + PlatformChecksum("6c35140ce4d75874bdd60aa1872400b05fd05ca2", + "ab451bb8301d9a92fbf4de91556b56f1ea38b4ce", "not used", + "6c35140ce4d75874bdd60aa1872400b05fd05ca2", + "64b46bb3c1165537a880ae8404afce2efba456c0"); const std::string network_stats_checksum = - PlatformChecksum("2a5516cdc1c6af9f1d9d3c2f95ed292f509311c7", - "e96a7f081ebc111f49c7373d3728274057012ae9", "not used", - "2a5516cdc1c6af9f1d9d3c2f95ed292f509311c7", - "2a5516cdc1c6af9f1d9d3c2f95ed292f509311c7"); + PlatformChecksum("90594d85fa31d3d9584d79293bf7aa4ee55ed751", + "77b9c3640b81aff6a38d69d07dd782d39c15321d", "not used", + "90594d85fa31d3d9584d79293bf7aa4ee55ed751", + "90594d85fa31d3d9584d79293bf7aa4ee55ed751"); DecodeAndCompare(input_rtp_file, output_checksum, network_stats_checksum, absl::GetFlag(FLAGS_gen_ref)); @@ -110,18 +110,18 @@ TEST_F(NetEqDecodingTest, MAYBE_TestOpusBitExactness) { webrtc::test::ResourcePath("audio_coding/neteq_opus", "rtp"); const std::string maybe_sse = - "554ad4133934e3920f97575579a46f674683d77c" - "|de316e2bfb15192edb820fe5fb579d11ff5a524b"; + "c7887ff60eecf460332c6c7a28c81561f9e8a40f" + "|673dd422cfc174152536d3b13af64f9722520ab5"; const std::string output_checksum = PlatformChecksum( - maybe_sse, "b3fac4ad4f6ea384aff676ee1ea816bd70415490", - "373ccd99c147cd3fcef0e7dcad6f87d0f8e5a1c0", maybe_sse, maybe_sse); + maybe_sse, "e39283dd61a89cead3786ef8642d2637cc447296", + "53d8073eb848b70974cba9e26424f4946508fd19", maybe_sse, maybe_sse); const std::string network_stats_checksum = - PlatformChecksum("ec29e047b019a86ec06e2c40643143dc1975c69f", - "ce6f519bc1220b003944ac5d9db077665a06834e", - "abb686d3ac6fac0001ca8d45a6ca6f5aefb2f9d6", - "ec29e047b019a86ec06e2c40643143dc1975c69f", - "ec29e047b019a86ec06e2c40643143dc1975c69f"); + PlatformChecksum("c438bfa3b018f77691279eb9c63730569f54585c", + "8a474ed0992591e0c84f593824bb05979c3de157", + "9a05378dbf7e6edd56cdeb8ec45bcd6d8589623c", + "c438bfa3b018f77691279eb9c63730569f54585c", + "c438bfa3b018f77691279eb9c63730569f54585c"); DecodeAndCompare(input_rtp_file, output_checksum, network_stats_checksum, absl::GetFlag(FLAGS_gen_ref));