Adding a 5% as packet loss level for Opus

This is a follow up of
https://webrtc-codereview.appspot.com/16979004/

The purpose of this CL is to add 5% as a level for optimizing the packet loss rate to report to Opus. Adding such a level makes the grid finer.

BUG=
R=tina.legrand@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/13179004

git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@6902 4adac7df-926f-26a2-2b94-8c16560cd09d
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