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;
}