ape: fix decoding of large value in 3.91-3.98
authorKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 25 Dec 2020 12:48:23 +0000 (13:48 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 25 Dec 2020 12:48:23 +0000 (13:48 +0100)
nihav-llaudio/src/codecs/apereader.rs

index acd602bd1b4dc507fba9763df896e6f15c84542b..c1681a4e4a86ee6ab8b586d689a229b4249843c2 100644 (file)
@@ -360,9 +360,9 @@ fn decode_value_3910(rc: &mut ARangeCoder, rice: &mut RiceParams) -> i32 {
     let base = if k <= 16 {
             rc.decode_bits(k)
         } else if k <= 32 {
     let base = if k <= 16 {
             rc.decode_bits(k)
         } else if k <= 32 {
-            let low = rc.decode_bits(k);
+            let low = rc.decode_bits(16);
             let high = rc.decode_bits(k - 16);
             let high = rc.decode_bits(k - 16);
-            (high << (k - 16)) | low
+            (high << 16) | low
         } else {
             rc.error = true;
             return 0;
         } else {
             rc.error = true;
             return 0;