Add coarse energy entropy model tuning.

This tunes the entropy model for coarse energy introduced in commit
 c1c40a76.
It uses a constant set of parameters, tuned from about an hour and a
 half of randomly selected test data encoded for each frame size,
 prediction type (inter/intra), and band number.
These will be slightly sub-optimal for different frame sizes, but
 should be better than what we were using.

For inter, this saves an average of 2.8, 5.2, 7.1, and 6.7 bits/frame
 for frame sizes of 120, 240, 480, and 960, respectively.
For intra, this saves an average of 1.5, 3.0, 4.5, and 5.3 bits/frame
 (for the same frame sizes, respectively).
This commit is contained in:
Timothy B. Terriberry 2010-11-09 01:43:18 -08:00 committed by Jean-Marc Valin
parent 99a19474a0
commit ef2e650592
9 changed files with 108 additions and 94 deletions

View file

@ -861,8 +861,8 @@ int celt_encode_with_ec_float(CELTEncoder * restrict st, const celt_sig * pcm, i
ALLOC(error, C*st->mode->nbEBands, celt_word16);
quant_coarse_energy(st->mode, st->start, st->end, effEnd, bandLogE,
oldBandE, nbCompressedBytes*8, st->mode->prob,
error, enc, C, LM, nbAvailableBytes, st->force_intra,
oldBandE, nbCompressedBytes*8, error, enc,
C, LM, nbAvailableBytes, st->force_intra,
&st->delayedIntra, st->complexity >= 4);
if (LM > 0)
@ -1663,7 +1663,7 @@ int celt_decode_with_ec_float(CELTDecoder * restrict st, const unsigned char *da
intra_ener = ec_dec_bit_prob(dec, 8192);
/* Get band energies */
unquant_coarse_energy(st->mode, st->start, st->end, bandE, oldBandE,
intra_ener, st->mode->prob, dec, C, LM);
intra_ener, dec, C, LM);
if (LM > 0)
isTransient = ec_dec_bit_prob(dec, 8192);