Skip to content
This repository was archived by the owner on Oct 25, 2024. It is now read-only.

Commit 80fb978

Browse files
Jakob IvarssonCommit Bot
authored andcommitted
Reland "Reland "Refactor NetEq delay manager logic.""
This is a reland of 2a7c57c Original change's description: > Reland "Refactor NetEq delay manager logic." > > This is a reland of f8e62fc > > Original change's description: > > Refactor NetEq delay manager logic. > > > > - Removes dependence on sequence number for calculating target delay. > > - Changes target delay unit to milliseconds instead of number of > > packets. > > - Moves acceleration/preemptive expand thresholds to decision logic. > > Tests for this will be added in a follow up cl. > > > > Bug: webrtc:10333 > > Change-Id: If690aae4abf41ef1d9353f0ff01fb7d121cf8a26 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/186265 > > Commit-Queue: Jakob Ivarsson <[email protected]> > > Reviewed-by: Ivo Creusen <[email protected]> > > Cr-Commit-Position: refs/heads/master@{#32326} > > Bug: webrtc:10333 > Change-Id: Iad5e7063f63b84762959ee5b412f5f14a7b2cd06 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/186943 > Commit-Queue: Jakob Ivarsson <[email protected]> > Reviewed-by: Ivo Creusen <[email protected]> > Cr-Commit-Position: refs/heads/master@{#32332} Bug: webrtc:10333 Change-Id: If2244ee9a3d56a0cfa9b602e7bdf448dc6340147 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/187356 Reviewed-by: Ivo Creusen <[email protected]> Commit-Queue: Jakob Ivarsson <[email protected]> Cr-Commit-Position: refs/heads/master@{#32367}
1 parent 9577be3 commit 80fb978

12 files changed

+285
-624
lines changed

modules/audio_coding/acm2/audio_coding_module_unittest.cc

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -939,58 +939,58 @@ class AcmReceiverBitExactnessOldApi : public ::testing::Test {
939939
defined(WEBRTC_CODEC_ILBC)
940940
TEST_F(AcmReceiverBitExactnessOldApi, 8kHzOutput) {
941941
std::string others_checksum_reference =
942-
GetCPUInfo(kAVX2) != 0 ? "6edbfe69b965a8687b8744ed1b8eb5a7"
943-
: "6c204b289486b0695b08a9e94fab1948";
942+
GetCPUInfo(kAVX2) != 0 ? "1d7b784031599e2c01a3f575f8439f2f"
943+
: "c119fda4ea2c119ff2a720fd0c289071";
944944
std::string win64_checksum_reference =
945945
GetCPUInfo(kAVX2) != 0 ? "405a50f0bcb8827e20aa944299fc59f6"
946-
: "ff5ffee2ee92f8fe61d9f2010b8a68a3";
946+
: "38e70d4e186f8e1a56b929fafcb7c379";
947947
Run(8000,
948948
PlatformChecksum(others_checksum_reference, win64_checksum_reference,
949-
"53494a96f3db4a5b07d723e0cbac0ad7",
949+
"3b03e41731e1cef5ae2b9f9618660b42",
950950
"4598140b5e4f7ee66c5adad609e65a3e",
951-
"516c2859126ea4913f30d51af4a4f3dc"));
951+
"da7e76687c8c0a9509cd1d57ee1aba3b"));
952952
}
953953

954954
TEST_F(AcmReceiverBitExactnessOldApi, 16kHzOutput) {
955955
std::string others_checksum_reference =
956-
GetCPUInfo(kAVX2) != 0 ? "295f031e051f1770b4ab4107dba768b5"
957-
: "226dbdbce2354399c6df05371042cda3";
956+
GetCPUInfo(kAVX2) != 0 ? "8884d910e443c244d8593c2e3cef5e63"
957+
: "36dc8c0532ba0efa099e2b6a689cde40";
958958
std::string win64_checksum_reference =
959959
GetCPUInfo(kAVX2) != 0 ? "58fd62a5c49ee513f9fa6fe7dbf62c97"
960-
: "9c80bf5ec496c41ce8112e1523bf8c83";
960+
: "07e4b388168e273fa19da0a167aff782";
961961
Run(16000,
962962
PlatformChecksum(others_checksum_reference, win64_checksum_reference,
963-
"11a6f170fdaffa81a2948af121f370af",
963+
"06b08d14a72f6e7c72840b1cc9ad204d",
964964
"f2aad418af974a3b1694d5ae5cc2c3c7",
965-
"6133301a18be95c416984182816d859f"));
965+
"1d5f9a93f3975e7e491373b81eb5fd14"));
966966
}
967967

968968
TEST_F(AcmReceiverBitExactnessOldApi, 32kHzOutput) {
969969
std::string others_checksum_reference =
970-
GetCPUInfo(kAVX2) != 0 ? "2895e5ab3146eaa78fa6843ed60e7e37"
971-
: "f94665cc0e904d5d5cf0394e30ee4edd";
970+
GetCPUInfo(kAVX2) != 0 ? "73f4fe21996c0af495e2c47e3708e519"
971+
: "c848ce9002d3825056a1eac2a067c0d3";
972972
std::string win64_checksum_reference =
973973
GetCPUInfo(kAVX2) != 0 ? "04ce6a1dac5ffdd8438d804623d0132f"
974-
: "697934bcf0849f80d76ce20854161220";
974+
: "0e705f6844c75fd57a84734f7c30af87";
975975
Run(32000,
976976
PlatformChecksum(others_checksum_reference, win64_checksum_reference,
977-
"3609aa5288c1d512e8e652ceabecb495",
977+
"c18e98e5701ec91bba5c026b720d1790",
978978
"100869c8dcde51346c2073e52a272d98",
979-
"55363bc9cdda6464a58044919157827b"));
979+
"e35df943bfa3ca32e86b26bf1e37ed8f"));
980980
}
981981

982982
TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutput) {
983983
std::string others_checksum_reference =
984-
GetCPUInfo(kAVX2) != 0 ? "640bca210e1b8dd229224d2a0c79ff1f"
985-
: "2955d0b83602541fd92d9b820ebce68d";
984+
GetCPUInfo(kAVX2) != 0 ? "884243f7e1476931e93eda5de88d1326"
985+
: "ba0f66d538487bba377e721cfac62d1e";
986986
std::string win64_checksum_reference =
987987
GetCPUInfo(kAVX2) != 0 ? "f59833d9b0924f4b0704707dd3589f80"
988-
: "f4a8386a6a49439ced60ed9a7c7f75fd";
988+
: "6a480541fb86faa95c7563b9de08104d";
989989
Run(48000,
990990
PlatformChecksum(others_checksum_reference, win64_checksum_reference,
991-
"d8169dfeba708b5212bdc365e08aee9d",
991+
"30e617e4b3c9ba1979d1b2e8eba3519b",
992992
"bd44bf97e7899186532f91235cef444d",
993-
"47594deaab5d9166cfbf577203b2563e"));
993+
"90158462a1853b1de50873eebd68dba7"));
994994
}
995995

996996
TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutputExternalDecoder) {
@@ -1069,16 +1069,16 @@ TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutputExternalDecoder) {
10691069
rtc::scoped_refptr<rtc::RefCountedObject<ADFactory>> factory(
10701070
new rtc::RefCountedObject<ADFactory>);
10711071
std::string others_checksum_reference =
1072-
GetCPUInfo(kAVX2) != 0 ? "640bca210e1b8dd229224d2a0c79ff1f"
1073-
: "2955d0b83602541fd92d9b820ebce68d";
1072+
GetCPUInfo(kAVX2) != 0 ? "884243f7e1476931e93eda5de88d1326"
1073+
: "ba0f66d538487bba377e721cfac62d1e";
10741074
std::string win64_checksum_reference =
10751075
GetCPUInfo(kAVX2) != 0 ? "f59833d9b0924f4b0704707dd3589f80"
1076-
: "f4a8386a6a49439ced60ed9a7c7f75fd";
1076+
: "6a480541fb86faa95c7563b9de08104d";
10771077
Run(48000,
10781078
PlatformChecksum(others_checksum_reference, win64_checksum_reference,
1079-
"d8169dfeba708b5212bdc365e08aee9d",
1079+
"30e617e4b3c9ba1979d1b2e8eba3519b",
10801080
"bd44bf97e7899186532f91235cef444d",
1081-
"47594deaab5d9166cfbf577203b2563e"),
1081+
"90158462a1853b1de50873eebd68dba7"),
10821082
factory, [](AudioCodingModule* acm) {
10831083
acm->SetReceiveCodecs({{0, {"MockPCMu", 8000, 1}},
10841084
{103, {"ISAC", 16000, 1}},
@@ -1312,11 +1312,11 @@ TEST_F(AcmSenderBitExactnessOldApi, IsacWb30ms) {
13121312
TEST_F(AcmSenderBitExactnessOldApi, IsacWb60ms) {
13131313
ASSERT_NO_FATAL_FAILURE(SetUpTest("ISAC", 16000, 1, 103, 960, 960));
13141314
Run(AcmReceiverBitExactnessOldApi::PlatformChecksum(
1315-
"f59760fa000991ee5fa81f2e607db254",
1316-
"986aa16d7097a26e32e212e39ec58517",
1315+
"1ad29139a04782a33daad8c2b9b35875",
1316+
"14d63c5f08127d280e722e3191b73bdd",
13171317
"9a81e467eb1485f84aca796f8ea65011",
13181318
"ef75e900e6f375e3061163c53fd09a63",
1319-
"f59760fa000991ee5fa81f2e607db254"),
1319+
"1ad29139a04782a33daad8c2b9b35875"),
13201320
AcmReceiverBitExactnessOldApi::PlatformChecksum(
13211321
"9e0a0ab743ad987b55b8e14802769c56",
13221322
"ebe04a819d3a9d83a83a17f271e1139a",
@@ -1349,37 +1349,37 @@ TEST_F(AcmSenderBitExactnessOldApi, MAYBE_IsacSwb30ms) {
13491349

13501350
TEST_F(AcmSenderBitExactnessOldApi, Pcm16_8000khz_10ms) {
13511351
ASSERT_NO_FATAL_FAILURE(SetUpTest("L16", 8000, 1, 107, 80, 80));
1352-
Run("de4a98e1406f8b798d99cd0704e862e2", "c1edd36339ce0326cc4550041ad719a0",
1352+
Run("15396f66b5b0ab6842e151c807395e4c", "c1edd36339ce0326cc4550041ad719a0",
13531353
100, test::AcmReceiveTestOldApi::kMonoOutput);
13541354
}
13551355

13561356
TEST_F(AcmSenderBitExactnessOldApi, Pcm16_16000khz_10ms) {
13571357
ASSERT_NO_FATAL_FAILURE(SetUpTest("L16", 16000, 1, 108, 160, 160));
1358-
Run("ae646d7b68384a1269cc080dd4501916", "ad786526383178b08d80d6eee06e9bad",
1358+
Run("54ae004529874c2b362c7f0ccd19cb99", "ad786526383178b08d80d6eee06e9bad",
13591359
100, test::AcmReceiveTestOldApi::kMonoOutput);
13601360
}
13611361

13621362
TEST_F(AcmSenderBitExactnessOldApi, Pcm16_32000khz_10ms) {
13631363
ASSERT_NO_FATAL_FAILURE(SetUpTest("L16", 32000, 1, 109, 320, 320));
1364-
Run("7fe325e8fbaf755e3c5df0b11a4774fb", "5ef82ea885e922263606c6fdbc49f651",
1364+
Run("d6a4a68b8c838dcc1e7ae7136467cdf0", "5ef82ea885e922263606c6fdbc49f651",
13651365
100, test::AcmReceiveTestOldApi::kMonoOutput);
13661366
}
13671367

13681368
TEST_F(AcmSenderBitExactnessOldApi, Pcm16_stereo_8000khz_10ms) {
13691369
ASSERT_NO_FATAL_FAILURE(SetUpTest("L16", 8000, 2, 111, 80, 80));
1370-
Run("fb263b74e7ac3de915474d77e4744ceb", "62ce5adb0d4965d0a52ec98ae7f98974",
1370+
Run("6b011dab43e3a8a46ccff7e4412ed8a2", "62ce5adb0d4965d0a52ec98ae7f98974",
13711371
100, test::AcmReceiveTestOldApi::kStereoOutput);
13721372
}
13731373

13741374
TEST_F(AcmSenderBitExactnessOldApi, Pcm16_stereo_16000khz_10ms) {
13751375
ASSERT_NO_FATAL_FAILURE(SetUpTest("L16", 16000, 2, 112, 160, 160));
1376-
Run("d09e9239553649d7ac93e19d304281fd", "41ca8edac4b8c71cd54fd9f25ec14870",
1376+
Run("17fc9854358bfe0419408290664bd78e", "41ca8edac4b8c71cd54fd9f25ec14870",
13771377
100, test::AcmReceiveTestOldApi::kStereoOutput);
13781378
}
13791379

13801380
TEST_F(AcmSenderBitExactnessOldApi, Pcm16_stereo_32000khz_10ms) {
13811381
ASSERT_NO_FATAL_FAILURE(SetUpTest("L16", 32000, 2, 113, 320, 320));
1382-
Run("5f025d4f390982cc26b3d92fe02e3044", "50e58502fb04421bf5b857dda4c96879",
1382+
Run("9ac9a1f64d55da2fc9f3167181cc511d", "50e58502fb04421bf5b857dda4c96879",
13831383
100, test::AcmReceiveTestOldApi::kStereoOutput);
13841384
}
13851385

modules/audio_coding/neteq/buffer_level_filter.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,12 @@ void BufferLevelFilter::Update(size_t buffer_size_samples,
4545
filtered_current_level - (int64_t{time_stretched_samples} * (1 << 8))));
4646
}
4747

48-
void BufferLevelFilter::SetTargetBufferLevel(int target_buffer_level) {
49-
if (target_buffer_level <= 1) {
48+
void BufferLevelFilter::SetTargetBufferLevel(int target_buffer_level_ms) {
49+
if (target_buffer_level_ms <= 20) {
5050
level_factor_ = 251;
51-
} else if (target_buffer_level <= 3) {
51+
} else if (target_buffer_level_ms <= 60) {
5252
level_factor_ = 252;
53-
} else if (target_buffer_level <= 7) {
53+
} else if (target_buffer_level_ms <= 140) {
5454
level_factor_ = 253;
5555
} else {
5656
level_factor_ = 254;

modules/audio_coding/neteq/buffer_level_filter.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,13 @@ class BufferLevelFilter {
2323
virtual ~BufferLevelFilter() {}
2424
virtual void Reset();
2525

26-
// Updates the filter. Current buffer size is |buffer_size_packets| (Q0).
26+
// Updates the filter. Current buffer size is |buffer_size_samples|.
2727
// |time_stretched_samples| is subtracted from the filtered value (thus
2828
// bypassing the filter operation).
2929
virtual void Update(size_t buffer_size_samples, int time_stretched_samples);
3030

31-
// Set the current target buffer level in number of packets (obtained from
32-
// DelayManager::base_target_level()). Used to select the appropriate
33-
// filter coefficient.
34-
virtual void SetTargetBufferLevel(int target_buffer_level_packets);
31+
// The target level is used to select the appropriate filter coefficient.
32+
virtual void SetTargetBufferLevel(int target_buffer_level_ms);
3533

3634
// Returns filtered current level in number of samples.
3735
virtual int filtered_current_level() const {

modules/audio_coding/neteq/buffer_level_filter_unittest.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ TEST(BufferLevelFilter, ConvergenceTest) {
3030
for (int times = 10; times <= 50; times += 10) {
3131
for (int value = 100; value <= 200; value += 10) {
3232
filter.Reset();
33-
filter.SetTargetBufferLevel(1); // Makes filter coefficient 251/256.
33+
filter.SetTargetBufferLevel(20); // Makes filter coefficient 251/256.
3434
rtc::StringBuilder ss;
3535
ss << "times = " << times << ", value = " << value;
3636
SCOPED_TRACE(ss.str()); // Print out the parameter values on failure.
@@ -57,7 +57,7 @@ TEST(BufferLevelFilter, FilterFactor) {
5757
const int kTimes = 10;
5858
const int kValue = 100;
5959

60-
filter.SetTargetBufferLevel(3); // Makes filter coefficient 252/256.
60+
filter.SetTargetBufferLevel(60); // Makes filter coefficient 252/256.
6161
for (int i = 0; i < kTimes; ++i) {
6262
filter.Update(kValue, 0 /* time_stretched_samples */);
6363
}
@@ -67,7 +67,7 @@ TEST(BufferLevelFilter, FilterFactor) {
6767
EXPECT_EQ(expected_value, filter.filtered_current_level());
6868

6969
filter.Reset();
70-
filter.SetTargetBufferLevel(7); // Makes filter coefficient 253/256.
70+
filter.SetTargetBufferLevel(140); // Makes filter coefficient 253/256.
7171
for (int i = 0; i < kTimes; ++i) {
7272
filter.Update(kValue, 0 /* time_stretched_samples */);
7373
}
@@ -77,7 +77,7 @@ TEST(BufferLevelFilter, FilterFactor) {
7777
EXPECT_EQ(expected_value, filter.filtered_current_level());
7878

7979
filter.Reset();
80-
filter.SetTargetBufferLevel(8); // Makes filter coefficient 254/256.
80+
filter.SetTargetBufferLevel(160); // Makes filter coefficient 254/256.
8181
for (int i = 0; i < kTimes; ++i) {
8282
filter.Update(kValue, 0 /* time_stretched_samples */);
8383
}
@@ -89,7 +89,7 @@ TEST(BufferLevelFilter, FilterFactor) {
8989

9090
TEST(BufferLevelFilter, TimeStretchedSamples) {
9191
BufferLevelFilter filter;
92-
filter.SetTargetBufferLevel(1); // Makes filter coefficient 251/256.
92+
filter.SetTargetBufferLevel(20); // Makes filter coefficient 251/256.
9393
// Update 10 times with value 100.
9494
const int kTimes = 10;
9595
const int kValue = 100;

0 commit comments

Comments
 (0)