X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-indeo%2Fsrc%2Fcodecs%2Fintel263.rs;fp=nihav-indeo%2Fsrc%2Fcodecs%2Fintel263.rs;h=b2e58cbfdadf75df3eba76b091ae6a0584fe97e9;hb=1032dfe16237d2cefa04e616d8202222af790401;hp=42d0380a573d06f8855a000b81597da5b34b0300;hpb=2f67d8bbe5c10f600f9178aa3a7c168d38fd351f;p=nihav.git diff --git a/nihav-indeo/src/codecs/intel263.rs b/nihav-indeo/src/codecs/intel263.rs index 42d0380..b2e58cb 100644 --- a/nihav-indeo/src/codecs/intel263.rs +++ b/nihav-indeo/src/codecs/intel263.rs @@ -79,7 +79,11 @@ impl<'a> Intel263BR<'a> { level = code.get_level(); last = code.is_last(); if br.read_bool()? { level = -level; } - level = (level * q) + q_add; + if level > 0 { + level = (level * q) + q_add; + } else { + level = (level * q) - q_add; + } } else { last = br.read_bool()?; run = br.read(6)? as u8; @@ -89,7 +93,11 @@ impl<'a> Intel263BR<'a> { let top = br.read_s(6)? as i16; level = (top << 5) | low; } - level = (level * q) + q_add; + if level > 0 { + level = (level * q) + q_add; + } else { + level = (level * q) - q_add; + } if level < -2048 { level = -2048; } if level > 2047 { level = 2047; } }