Mercurial > libavcodec.hg
changeset 6624:2dc587201e38 libavcodec
Change k limiting code, i think the code was buggy.
If you have ALAC files TEST them! Mine produce the same md5 but the new
code is not identical if limiting does happen.
author | michael |
---|---|
date | Thu, 17 Apr 2008 03:00:08 +0000 |
parents | 2d007f504886 |
children | 1f4a86db7835 |
files | alac.c |
diffstat | 1 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/alac.c Thu Apr 17 02:40:50 2008 +0000 +++ b/alac.c Thu Apr 17 03:00:08 2008 +0000 @@ -226,18 +226,20 @@ k = count_leading_zeros(history) + ((history + 16) >> 6 /* / 64 */) - 24; - extrabits = show_bits(&alac->gb, k); + if (k >= rice_kmodifier) + k = rice_kmodifier; - block_size = (((1 << k) - 1) & rice_kmodifier_mask) * x - + extrabits - 1; + x = (x << k) - x; + + extrabits = show_bits(&alac->gb, k); if (extrabits < 2) { - x = 1 - extrabits; - block_size += x; skip_bits(&alac->gb, k - 1); } else { + x += extrabits - 1; skip_bits(&alac->gb, k); } + block_size = x; } if (block_size > 0) {