X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-duck%2Fsrc%2Fcodecs%2Fvpcommon.rs;h=562a9a2601dcbaf0c4d09983e4312b39390baf74;hp=3caf56997f6d96aed2f7361e909fd191fde4f9c4;hb=587a6d789be865f24bd31ef65aabf1b9d5809965;hpb=1333465786c9d2746030a1024e5ceb2ea1a77be5 diff --git a/nihav-duck/src/codecs/vpcommon.rs b/nihav-duck/src/codecs/vpcommon.rs index 3caf569..562a9a2 100644 --- a/nihav-duck/src/codecs/vpcommon.rs +++ b/nihav-duck/src/codecs/vpcommon.rs @@ -120,6 +120,20 @@ impl<'a> BoolCoder<'a> { } val } + pub fn read_byte(&mut self) -> u8 { + let mut val = 0u8; + for _ in 0..8 { + val = (val << 1) | (self.read_prob(128) as u8); + } + val + } + pub fn read_sbits(&mut self, bits: u8) -> i32 { + let mut val = if self.read_prob(128) { -1i32 } else { 0i32 }; + for _ in 1..bits { + val = (val << 1) | (self.read_prob(128) as i32); + } + val + } pub fn read_probability(&mut self) -> u8 { let val = self.read_bits(7) as u8; if val == 0 {