shithub: opus

Download patch

ref: 03f7de77a4ac7a0e83ba99c0d1fdb111404f92ca
parent: d830d089237e774bb06a542e7a5082ffe4fc079d
author: Gregory Maxwell <[email protected]>
date: Mon Aug 15 13:25:59 EDT 2011

Strip off trailing zero bytes when in LPC mode.
Saves about 60 bits/sec for 20ms frames.

--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -568,6 +568,14 @@
     {
         ret = (ec_tell(&enc)+7)>>3;
         ec_enc_done(&enc);
+        /*When in LPC only mode it's perfectly
+          reasonable to strip off trailing zero bytes as
+          the required range decoder behavior is to
+          fill these in. This can't be done when the MDCT
+          modes are used because the decoder needs to know
+          the actual length for allocation purposes.*/
+        if(!redundancy)
+            while(ret>2&&data[ret-1]==0)ret--;
         nb_compr_bytes = ret;
     }