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) {