diff options
author | Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> | 2009-05-23 22:17:02 +0400 |
---|---|---|
committer | Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> | 2009-05-23 22:17:02 +0400 |
commit | be607256398ef5494063e23c7d0f528939e4d8d8 (patch) | |
tree | d3a92f4c8869f4b24a0da2febafd5f75660b4f9e /libcelt/laplace.c | |
parent | ce02e1b49dc13fbf29359f4634beef8022e6f128 (diff) |
Making use of previously unused range of the laplace encoder to have a slightly
wider range of values.
Diffstat (limited to 'libcelt/laplace.c')
-rw-r--r-- | libcelt/laplace.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/libcelt/laplace.c b/libcelt/laplace.c index a87d873..db4e5fc 100644 --- a/libcelt/laplace.c +++ b/libcelt/laplace.c @@ -63,13 +63,18 @@ void ec_laplace_encode_start(ec_enc *enc, int *value, int decay, int fs) fs = (fs*(ec_int32)decay)>>14; if (fs == 0) { - fs = tmp_s; - fl = tmp_l; - if (s) - *value = -i; - else - *value = i; - break; + if (fl+2 <= ft) + { + fs = 1; + } else { + fs = tmp_s; + fl = tmp_l; + if (s) + *value = -i; + else + *value = i; + break; + } } } if (fl < 0) @@ -103,6 +108,10 @@ int ec_laplace_decode_start(ec_dec *dec, int decay, int fs) { fl = fh; fs = (fs*(ec_int32)decay)>>14; + if (fs == 0 && fh+2 <= ft) + { + fs = 1; + } fh += fs*2; val++; } |