Strip off trailing zero bytes when in LPC mode.

Saves about 60 bits/sec for 20ms frames.
This commit is contained in:
Gregory Maxwell 2011-08-15 17:25:59 -04:00
parent d830d08923
commit 03f7de77a4

View file

@ -568,6 +568,14 @@ int opus_encode(OpusEncoder *st, const opus_int16 *pcm, int frame_size,
{ {
ret = (ec_tell(&enc)+7)>>3; ret = (ec_tell(&enc)+7)>>3;
ec_enc_done(&enc); 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; nb_compr_bytes = ret;
} }