diff --git a/modules/audio_coding/main/acm2/acm_opus.cc b/modules/audio_coding/main/acm2/acm_opus.cc
index c778982..961fda1 100644
--- a/modules/audio_coding/main/acm2/acm_opus.cc
+++ b/modules/audio_coding/main/acm2/acm_opus.cc
@@ -226,24 +226,29 @@
 int ACMOpus::SetPacketLossRate(int loss_rate) {
   // Optimize the loss rate to configure Opus. Basically, optimized loss rate is
   // the input loss rate rounded down to various levels, because a robustly good
-  // audio quality is achieved by lowering the packet loss lower down.
+  // audio quality is achieved by lowering the packet loss down.
   // Additionally, to prevent toggling, margins are used, i.e., when jumping to
   // a loss rate from below, a higher threshold is used than jumping to the same
   // level from above.
-  const int kPacketLossRateHigh = 20;
-  const int kPacketLossRateMedium = 10;
-  const int kPacketLossRateLow = 1;
-  const int kLossRateHighMargin = 2;
-  const int kLossRateMediumMargin = 1;
+  const int kPacketLossRate20 = 20;
+  const int kPacketLossRate10 = 10;
+  const int kPacketLossRate5 = 5;
+  const int kPacketLossRate1 = 1;
+  const int kLossRate20Margin = 2;
+  const int kLossRate10Margin = 1;
+  const int kLossRate5Margin = 1;
   int opt_loss_rate;
-  if (loss_rate >= kPacketLossRateHigh + kLossRateHighMargin *
-      SIGN(kPacketLossRateHigh - packet_loss_rate_)) {
-    opt_loss_rate = kPacketLossRateHigh;
-  } else if (loss_rate >= kPacketLossRateMedium + kLossRateMediumMargin *
-      SIGN(kPacketLossRateMedium - packet_loss_rate_)) {
-    opt_loss_rate = kPacketLossRateMedium;
-  } else if (loss_rate >= kPacketLossRateLow) {
-    opt_loss_rate = kPacketLossRateLow;
+  if (loss_rate >= kPacketLossRate20 + kLossRate20Margin *
+      SIGN(kPacketLossRate20 - packet_loss_rate_)) {
+    opt_loss_rate = kPacketLossRate20;
+  } else if (loss_rate >= kPacketLossRate10 + kLossRate10Margin *
+      SIGN(kPacketLossRate10 - packet_loss_rate_)) {
+    opt_loss_rate = kPacketLossRate10;
+  } else if (loss_rate >= kPacketLossRate5 + kLossRate5Margin *
+      SIGN(kPacketLossRate5 - packet_loss_rate_)) {
+    opt_loss_rate = kPacketLossRate5;
+  } else if (loss_rate >= kPacketLossRate1) {
+    opt_loss_rate = kPacketLossRate1;
   } else {
     opt_loss_rate = 0;
   }
diff --git a/modules/audio_coding/main/acm2/acm_opus_unittest.cc b/modules/audio_coding/main/acm2/acm_opus_unittest.cc
index ecc9667..45ddd01 100644
--- a/modules/audio_coding/main/acm2/acm_opus_unittest.cc
+++ b/modules/audio_coding/main/acm2/acm_opus_unittest.cc
@@ -20,11 +20,13 @@
 namespace {
   const CodecInst kOpusCodecInst = {105, "opus", 48000, 960, 1, 32000};
   // These constants correspond to those used in ACMOpus::SetPacketLossRate().
-  const int kPacketLossRateHigh = 20;
-  const int kPacketLossRateMedium = 10;
-  const int kPacketLossRateLow = 1;
-  const int kLossRateHighMargin = 2;
-  const int kLossRateMediumMargin = 1;
+  const int kPacketLossRate20 = 20;
+  const int kPacketLossRate10 = 10;
+  const int kPacketLossRate5 = 5;
+  const int kPacketLossRate1 = 1;
+  const int kLossRate20Margin = 2;
+  const int kLossRate10Margin = 1;
+  const int kLossRate5Margin = 1;
 }  // namespace
 
 class AcmOpusTest : public ACMOpus {
@@ -54,24 +56,30 @@
 
   // Note that the order of the following calls is critical.
   opus.TestSetPacketLossRate(0, 0, 0);
-  opus.TestSetPacketLossRate(kPacketLossRateLow,
-                             kPacketLossRateMedium + kLossRateMediumMargin - 1,
-                             kPacketLossRateLow);
-  opus.TestSetPacketLossRate(kPacketLossRateMedium + kLossRateMediumMargin,
-                             kPacketLossRateHigh + kLossRateHighMargin - 1,
-                             kPacketLossRateMedium);
-  opus.TestSetPacketLossRate(kPacketLossRateHigh + kLossRateHighMargin,
+  opus.TestSetPacketLossRate(kPacketLossRate1,
+                             kPacketLossRate5 + kLossRate5Margin - 1,
+                             kPacketLossRate1);
+  opus.TestSetPacketLossRate(kPacketLossRate5 + kLossRate5Margin,
+                             kPacketLossRate10 + kLossRate10Margin - 1,
+                             kPacketLossRate5);
+  opus.TestSetPacketLossRate(kPacketLossRate10 + kLossRate10Margin,
+                             kPacketLossRate20 + kLossRate20Margin - 1,
+                             kPacketLossRate10);
+  opus.TestSetPacketLossRate(kPacketLossRate20 + kLossRate20Margin,
                              100,
-                             kPacketLossRateHigh);
-  opus.TestSetPacketLossRate(kPacketLossRateHigh + kLossRateHighMargin,
-                             kPacketLossRateHigh - kLossRateHighMargin,
-                             kPacketLossRateHigh);
-  opus.TestSetPacketLossRate(kPacketLossRateHigh - kLossRateHighMargin - 1,
-                             kPacketLossRateMedium - kLossRateMediumMargin,
-                             kPacketLossRateMedium);
-  opus.TestSetPacketLossRate(kPacketLossRateMedium - kLossRateMediumMargin - 1,
-                             kPacketLossRateLow,
-                             kPacketLossRateLow);
+                             kPacketLossRate20);
+  opus.TestSetPacketLossRate(kPacketLossRate20 + kLossRate20Margin,
+                             kPacketLossRate20 - kLossRate20Margin,
+                             kPacketLossRate20);
+  opus.TestSetPacketLossRate(kPacketLossRate20 - kLossRate20Margin - 1,
+                             kPacketLossRate10 - kLossRate10Margin,
+                             kPacketLossRate10);
+  opus.TestSetPacketLossRate(kPacketLossRate10 - kLossRate10Margin - 1,
+                             kPacketLossRate5 - kLossRate5Margin,
+                             kPacketLossRate5);
+  opus.TestSetPacketLossRate(kPacketLossRate5 - kLossRate5Margin - 1,
+                             kPacketLossRate1,
+                             kPacketLossRate1);
   opus.TestSetPacketLossRate(0, 0, 0);
 }
 #else
