Taking loss rate into account in compute_equiv_rate()
diff --git a/src/opus_encoder.c b/src/opus_encoder.c
index 05aa743..73a52ba 100644
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -990,9 +990,9 @@
 /* Returns the equivalent bitrate corresponding to 20 ms frames,
    complexity 10 VBR operation. */
 static opus_int32 compute_equiv_rate(opus_int32 bitrate, int channels,
-      int frame_rate, int vbr, int mode, int complexity)
+      int frame_rate, int vbr, int mode, int complexity, int loss)
 {
-   int equiv;
+   opus_int32 equiv;
    equiv = bitrate;
    /* Take into account overhead from smaller frames. */
    equiv -= (40*channels+20)*(frame_rate - 50);
@@ -1007,6 +1007,7 @@
          costs about 20%. */
       if (complexity<2)
          equiv = equiv*4/5;
+      equiv -= equiv*loss/(6*loss + 10);
    } else if (mode == MODE_CELT_ONLY) {
       /* CELT complexity 0-4 doesn't have the pitch filter, which costs
          about 10%. */
@@ -1014,6 +1015,8 @@
          equiv = equiv*9/10;
    } else {
       /* Mode not known yet */
+      /* Half the SILK loss*/
+      equiv -= equiv*loss/(12*loss + 20);
    }
    return equiv;
 }
@@ -1273,7 +1276,7 @@
 
     /* Equivalent 20-ms rate for mode/channel/bandwidth decisions */
     equiv_rate = compute_equiv_rate(st->bitrate_bps, st->channels, st->Fs/frame_size,
-          st->use_vbr, 0, st->silk_mode.complexity);
+          st->use_vbr, 0, st->silk_mode.complexity, st->silk_mode.packetLossPercentage);
 
     if (st->signal_type == OPUS_SIGNAL_VOICE)
        voice_est = 127;
@@ -1316,7 +1319,7 @@
     }
     /* Update equivalent rate for channels decision. */
     equiv_rate = compute_equiv_rate(st->bitrate_bps, st->stream_channels, st->Fs/frame_size,
-          st->use_vbr, 0, st->silk_mode.complexity);
+          st->use_vbr, 0, st->silk_mode.complexity, st->silk_mode.packetLossPercentage);
 
     /* Mode selection depending on application and signal type */
     if (st->application == OPUS_APPLICATION_RESTRICTED_LOWDELAY)
@@ -1416,7 +1419,7 @@
 
     /* Update equivalent rate with mode decision. */
     equiv_rate = compute_equiv_rate(st->bitrate_bps, st->stream_channels, st->Fs/frame_size,
-          st->use_vbr, st->mode, st->silk_mode.complexity);
+          st->use_vbr, st->mode, st->silk_mode.complexity, st->silk_mode.packetLossPercentage);
 
     /* For the first frame at a new SILK bandwidth */
     if (st->silk_bw_switch)