shithub: opus

Download patch

ref: 101c8c874e11f5fc0d52319de62af251a6a3fb81
parent: 98a8baa4ef9def4358a8678fca7819a344ecee6c
author: Mark Harris <[email protected]>
date: Sat Oct 12 21:12:35 EDT 2013

Fixes PLC for sizes that don't match basic Opus frame sizes.

Signed-off-by: Jean-Marc Valin <[email protected]>

--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -268,7 +268,9 @@
          return audiosize;
       }
 
-      if (mode != MODE_SILK_ONLY && audiosize > F20)
+      /* Avoids trying to run the PLC on sizes other than 2.5 (CELT), 5 (CELT),
+         10, or 20 (e.g. 12.5 or 30 ms). */
+      if (audiosize > F20)
       {
          do {
             int ret = opus_decode_frame(st, NULL, 0, pcm, IMIN(audiosize, F20), 0);
@@ -282,6 +284,12 @@
          } while (audiosize > 0);
          RESTORE_STACK;
          return frame_size;
+      } else if (audiosize < F20)
+      {
+         if (audiosize > F10)
+            audiosize = F10;
+         else if (mode != MODE_SILK_ONLY && audiosize > F5 && audiosize < F10)
+            audiosize = F5;
       }
    }