/rust/registry/src/index.crates.io-1949cf8c6b5b557f/lzma-rs-0.2.0/src/decode/rangecoder.rs
Line | Count | Source |
1 | | use crate::decode::util; |
2 | | use crate::error; |
3 | | use byteorder::{BigEndian, ReadBytesExt}; |
4 | | use std::io; |
5 | | |
6 | | pub struct RangeDecoder<'a, R> |
7 | | where |
8 | | R: 'a + io::BufRead, |
9 | | { |
10 | | pub stream: &'a mut R, |
11 | | pub range: u32, |
12 | | pub code: u32, |
13 | | } |
14 | | |
15 | | impl<'a, R> RangeDecoder<'a, R> |
16 | | where |
17 | | R: io::BufRead, |
18 | | { |
19 | 55.8k | pub fn new(stream: &'a mut R) -> io::Result<Self> { |
20 | 55.8k | let mut dec = Self { |
21 | 55.8k | stream, |
22 | 55.8k | range: 0xFFFF_FFFF, |
23 | 55.8k | code: 0, |
24 | 55.8k | }; |
25 | 55.8k | let _ = dec.stream.read_u8()?; |
26 | 50.8k | dec.code = dec.stream.read_u32::<BigEndian>()?; |
27 | | lzma_debug!("0 {{ range: {:08x}, code: {:08x} }}", dec.range, dec.code); |
28 | 36.3k | Ok(dec) |
29 | 55.8k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::new Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::new <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::new Line | Count | Source | 19 | 4.84k | pub fn new(stream: &'a mut R) -> io::Result<Self> { | 20 | 4.84k | let mut dec = Self { | 21 | 4.84k | stream, | 22 | 4.84k | range: 0xFFFF_FFFF, | 23 | 4.84k | code: 0, | 24 | 4.84k | }; | 25 | 4.84k | let _ = dec.stream.read_u8()?; | 26 | 4.84k | dec.code = dec.stream.read_u32::<BigEndian>()?; | 27 | | lzma_debug!("0 {{ range: {:08x}, code: {:08x} }}", dec.range, dec.code); | 28 | 4.79k | Ok(dec) | 29 | 4.84k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::new <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::new Line | Count | Source | 19 | 51.0k | pub fn new(stream: &'a mut R) -> io::Result<Self> { | 20 | 51.0k | let mut dec = Self { | 21 | 51.0k | stream, | 22 | 51.0k | range: 0xFFFF_FFFF, | 23 | 51.0k | code: 0, | 24 | 51.0k | }; | 25 | 51.0k | let _ = dec.stream.read_u8()?; | 26 | 46.0k | dec.code = dec.stream.read_u32::<BigEndian>()?; | 27 | | lzma_debug!("0 {{ range: {:08x}, code: {:08x} }}", dec.range, dec.code); | 28 | 31.5k | Ok(dec) | 29 | 51.0k | } |
|
30 | | |
31 | 586k | pub fn from_parts(stream: &'a mut R, range: u32, code: u32) -> Self { |
32 | 586k | Self { |
33 | 586k | stream, |
34 | 586k | range, |
35 | 586k | code, |
36 | 586k | } |
37 | 586k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::from_parts Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::from_parts <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::from_parts Line | Count | Source | 31 | 28.5k | pub fn from_parts(stream: &'a mut R, range: u32, code: u32) -> Self { | 32 | 28.5k | Self { | 33 | 28.5k | stream, | 34 | 28.5k | range, | 35 | 28.5k | code, | 36 | 28.5k | } | 37 | 28.5k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::from_parts Line | Count | Source | 31 | 6.55k | pub fn from_parts(stream: &'a mut R, range: u32, code: u32) -> Self { | 32 | 6.55k | Self { | 33 | 6.55k | stream, | 34 | 6.55k | range, | 35 | 6.55k | code, | 36 | 6.55k | } | 37 | 6.55k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::from_parts Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::from_parts Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::from_parts <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::from_parts Line | Count | Source | 31 | 463k | pub fn from_parts(stream: &'a mut R, range: u32, code: u32) -> Self { | 32 | 463k | Self { | 33 | 463k | stream, | 34 | 463k | range, | 35 | 463k | code, | 36 | 463k | } | 37 | 463k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::from_parts Line | Count | Source | 31 | 87.7k | pub fn from_parts(stream: &'a mut R, range: u32, code: u32) -> Self { | 32 | 87.7k | Self { | 33 | 87.7k | stream, | 34 | 87.7k | range, | 35 | 87.7k | code, | 36 | 87.7k | } | 37 | 87.7k | } |
|
38 | | |
39 | 74.5k | pub fn set(&mut self, range: u32, code: u32) { |
40 | 74.5k | self.range = range; |
41 | 74.5k | self.code = code; |
42 | 74.5k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::set Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::set Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::set Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::set <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::set Line | Count | Source | 39 | 3.05k | pub fn set(&mut self, range: u32, code: u32) { | 40 | 3.05k | self.range = range; | 41 | 3.05k | self.code = code; | 42 | 3.05k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::set Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::set Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::set <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::set Line | Count | Source | 39 | 71.5k | pub fn set(&mut self, range: u32, code: u32) { | 40 | 71.5k | self.range = range; | 41 | 71.5k | self.code = code; | 42 | 71.5k | } |
|
43 | | |
44 | 139k | pub fn read_into(&mut self, dst: &mut [u8]) -> io::Result<usize> { |
45 | 139k | self.stream.read(dst) |
46 | 139k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::read_into Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::read_into Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::read_into <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::read_into Line | Count | Source | 44 | 5 | pub fn read_into(&mut self, dst: &mut [u8]) -> io::Result<usize> { | 45 | 5 | self.stream.read(dst) | 46 | 5 | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::read_into Line | Count | Source | 44 | 7.38k | pub fn read_into(&mut self, dst: &mut [u8]) -> io::Result<usize> { | 45 | 7.38k | self.stream.read(dst) | 46 | 7.38k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::read_into Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::read_into <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::read_into Line | Count | Source | 44 | 293 | pub fn read_into(&mut self, dst: &mut [u8]) -> io::Result<usize> { | 45 | 293 | self.stream.read(dst) | 46 | 293 | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::read_into Line | Count | Source | 44 | 131k | pub fn read_into(&mut self, dst: &mut [u8]) -> io::Result<usize> { | 45 | 131k | self.stream.read(dst) | 46 | 131k | } |
|
47 | | |
48 | | #[inline] |
49 | 1.18k | pub fn is_finished_ok(&mut self) -> io::Result<bool> { |
50 | 1.18k | Ok(self.code == 0 && self.is_eof()?) |
51 | 1.18k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::is_finished_ok Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::is_finished_ok Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::is_finished_ok <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::is_finished_ok Line | Count | Source | 49 | 1 | pub fn is_finished_ok(&mut self) -> io::Result<bool> { | 50 | 1 | Ok(self.code == 0 && self.is_eof()?) | 51 | 1 | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::is_finished_ok Line | Count | Source | 49 | 1 | pub fn is_finished_ok(&mut self) -> io::Result<bool> { | 50 | 1 | Ok(self.code == 0 && self.is_eof()?) | 51 | 1 | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::is_finished_ok Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::is_finished_ok <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::is_finished_ok Line | Count | Source | 49 | 611 | pub fn is_finished_ok(&mut self) -> io::Result<bool> { | 50 | 611 | Ok(self.code == 0 && self.is_eof()?) | 51 | 611 | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::is_finished_ok Line | Count | Source | 49 | 572 | pub fn is_finished_ok(&mut self) -> io::Result<bool> { | 50 | 572 | Ok(self.code == 0 && self.is_eof()?) | 51 | 572 | } |
|
52 | | |
53 | | #[inline] |
54 | 34.9k | pub fn is_eof(&mut self) -> io::Result<bool> { |
55 | 34.9k | util::is_eof(self.stream) |
56 | 34.9k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::is_eof Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::is_eof Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::is_eof Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::is_eof <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::is_eof Line | Count | Source | 54 | 65 | pub fn is_eof(&mut self) -> io::Result<bool> { | 55 | 65 | util::is_eof(self.stream) | 56 | 65 | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::is_eof Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::is_eof <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::is_eof Line | Count | Source | 54 | 38 | pub fn is_eof(&mut self) -> io::Result<bool> { | 55 | 38 | util::is_eof(self.stream) | 56 | 38 | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::is_eof Line | Count | Source | 54 | 34.8k | pub fn is_eof(&mut self) -> io::Result<bool> { | 55 | 34.8k | util::is_eof(self.stream) | 56 | 34.8k | } |
|
57 | | |
58 | | #[inline] |
59 | 40.4M | fn normalize(&mut self) -> io::Result<()> { |
60 | | lzma_trace!(" {{ range: {:08x}, code: {:08x} }}", self.range, self.code); |
61 | 40.4M | if self.range < 0x0100_0000 { |
62 | 1.02M | self.range <<= 8; |
63 | 1.02M | self.code = (self.code << 8) ^ (self.stream.read_u8()? as u32); |
64 | | |
65 | | lzma_debug!("+ {{ range: {:08x}, code: {:08x} }}", self.range, self.code); |
66 | 39.4M | } |
67 | 40.3M | Ok(()) |
68 | 40.4M | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::normalize Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::normalize Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::normalize <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::normalize Line | Count | Source | 59 | 320k | fn normalize(&mut self) -> io::Result<()> { | 60 | | lzma_trace!(" {{ range: {:08x}, code: {:08x} }}", self.range, self.code); | 61 | 320k | if self.range < 0x0100_0000 { | 62 | 33.6k | self.range <<= 8; | 63 | 33.6k | self.code = (self.code << 8) ^ (self.stream.read_u8()? as u32); | 64 | | | 65 | | lzma_debug!("+ {{ range: {:08x}, code: {:08x} }}", self.range, self.code); | 66 | 286k | } | 67 | 317k | Ok(()) | 68 | 320k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::normalize Line | Count | Source | 59 | 1.09M | fn normalize(&mut self) -> io::Result<()> { | 60 | | lzma_trace!(" {{ range: {:08x}, code: {:08x} }}", self.range, self.code); | 61 | 1.09M | if self.range < 0x0100_0000 { | 62 | 36.2k | self.range <<= 8; | 63 | 36.2k | self.code = (self.code << 8) ^ (self.stream.read_u8()? as u32); | 64 | | | 65 | | lzma_debug!("+ {{ range: {:08x}, code: {:08x} }}", self.range, self.code); | 66 | 1.06M | } | 67 | 1.09M | Ok(()) | 68 | 1.09M | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::normalize Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::normalize <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::normalize Line | Count | Source | 59 | 5.70M | fn normalize(&mut self) -> io::Result<()> { | 60 | | lzma_trace!(" {{ range: {:08x}, code: {:08x} }}", self.range, self.code); | 61 | 5.70M | if self.range < 0x0100_0000 { | 62 | 504k | self.range <<= 8; | 63 | 504k | self.code = (self.code << 8) ^ (self.stream.read_u8()? as u32); | 64 | | | 65 | | lzma_debug!("+ {{ range: {:08x}, code: {:08x} }}", self.range, self.code); | 66 | 5.20M | } | 67 | 5.65M | Ok(()) | 68 | 5.70M | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::normalize Line | Count | Source | 59 | 33.2M | fn normalize(&mut self) -> io::Result<()> { | 60 | | lzma_trace!(" {{ range: {:08x}, code: {:08x} }}", self.range, self.code); | 61 | 33.2M | if self.range < 0x0100_0000 { | 62 | 449k | self.range <<= 8; | 63 | 449k | self.code = (self.code << 8) ^ (self.stream.read_u8()? as u32); | 64 | | | 65 | | lzma_debug!("+ {{ range: {:08x}, code: {:08x} }}", self.range, self.code); | 66 | 32.8M | } | 67 | 33.2M | Ok(()) | 68 | 33.2M | } |
|
69 | | |
70 | | #[inline] |
71 | 699k | fn get_bit(&mut self) -> error::Result<bool> { |
72 | 699k | self.range >>= 1; |
73 | | |
74 | 699k | let bit = self.code >= self.range; |
75 | 699k | if bit { |
76 | 372k | self.code -= self.range |
77 | 327k | } |
78 | | |
79 | 699k | self.normalize()?; |
80 | 695k | Ok(bit) |
81 | 699k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::get_bit Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::get_bit Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::get_bit <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::get_bit Line | Count | Source | 71 | 38.6k | fn get_bit(&mut self) -> error::Result<bool> { | 72 | 38.6k | self.range >>= 1; | 73 | | | 74 | 38.6k | let bit = self.code >= self.range; | 75 | 38.6k | if bit { | 76 | 16.7k | self.code -= self.range | 77 | 21.8k | } | 78 | | | 79 | 38.6k | self.normalize()?; | 80 | 37.8k | Ok(bit) | 81 | 38.6k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::get_bit Line | Count | Source | 71 | 13.5k | fn get_bit(&mut self) -> error::Result<bool> { | 72 | 13.5k | self.range >>= 1; | 73 | | | 74 | 13.5k | let bit = self.code >= self.range; | 75 | 13.5k | if bit { | 76 | 7.19k | self.code -= self.range | 77 | 6.35k | } | 78 | | | 79 | 13.5k | self.normalize()?; | 80 | 13.5k | Ok(bit) | 81 | 13.5k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::get_bit Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::get_bit <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::get_bit Line | Count | Source | 71 | 418k | fn get_bit(&mut self) -> error::Result<bool> { | 72 | 418k | self.range >>= 1; | 73 | | | 74 | 418k | let bit = self.code >= self.range; | 75 | 418k | if bit { | 76 | 226k | self.code -= self.range | 77 | 192k | } | 78 | | | 79 | 418k | self.normalize()?; | 80 | 414k | Ok(bit) | 81 | 418k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::get_bit Line | Count | Source | 71 | 229k | fn get_bit(&mut self) -> error::Result<bool> { | 72 | 229k | self.range >>= 1; | 73 | | | 74 | 229k | let bit = self.code >= self.range; | 75 | 229k | if bit { | 76 | 122k | self.code -= self.range | 77 | 106k | } | 78 | | | 79 | 229k | self.normalize()?; | 80 | 229k | Ok(bit) | 81 | 229k | } |
|
82 | | |
83 | 50.4k | pub fn get(&mut self, count: usize) -> error::Result<u32> { |
84 | 50.4k | let mut result = 0u32; |
85 | 50.4k | for _ in 0..count { |
86 | 699k | result = (result << 1) ^ (self.get_bit()? as u32) |
87 | | } |
88 | 46.1k | Ok(result) |
89 | 50.4k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::get Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::get Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::get <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::get Line | Count | Source | 83 | 2.88k | pub fn get(&mut self, count: usize) -> error::Result<u32> { | 84 | 2.88k | let mut result = 0u32; | 85 | 2.88k | for _ in 0..count { | 86 | 38.6k | result = (result << 1) ^ (self.get_bit()? as u32) | 87 | | } | 88 | 2.14k | Ok(result) | 89 | 2.88k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::get Line | Count | Source | 83 | 1.12k | pub fn get(&mut self, count: usize) -> error::Result<u32> { | 84 | 1.12k | let mut result = 0u32; | 85 | 1.12k | for _ in 0..count { | 86 | 13.5k | result = (result << 1) ^ (self.get_bit()? as u32) | 87 | | } | 88 | 1.12k | Ok(result) | 89 | 1.12k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::get Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::get <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::get Line | Count | Source | 83 | 31.3k | pub fn get(&mut self, count: usize) -> error::Result<u32> { | 84 | 31.3k | let mut result = 0u32; | 85 | 31.3k | for _ in 0..count { | 86 | 418k | result = (result << 1) ^ (self.get_bit()? as u32) | 87 | | } | 88 | 27.7k | Ok(result) | 89 | 31.3k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::get Line | Count | Source | 83 | 15.0k | pub fn get(&mut self, count: usize) -> error::Result<u32> { | 84 | 15.0k | let mut result = 0u32; | 85 | 15.0k | for _ in 0..count { | 86 | 229k | result = (result << 1) ^ (self.get_bit()? as u32) | 87 | | } | 88 | 15.0k | Ok(result) | 89 | 15.0k | } |
|
90 | | |
91 | | #[inline] |
92 | 39.7M | pub fn decode_bit(&mut self, prob: &mut u16, update: bool) -> io::Result<bool> { |
93 | 39.7M | let bound: u32 = (self.range >> 11) * (*prob as u32); |
94 | | |
95 | | lzma_trace!( |
96 | | " bound: {:08x}, prob: {:04x}, bit: {}", |
97 | | bound, |
98 | | prob, |
99 | | (self.code > bound) as u8 |
100 | | ); |
101 | 39.7M | if self.code < bound { |
102 | 29.3M | if update { |
103 | 27.8M | *prob += (0x800_u16 - *prob) >> 5; |
104 | 27.8M | } |
105 | 29.3M | self.range = bound; |
106 | | |
107 | 29.3M | self.normalize()?; |
108 | 29.2M | Ok(false) |
109 | | } else { |
110 | 10.4M | if update { |
111 | 7.30M | *prob -= *prob >> 5; |
112 | 7.30M | } |
113 | 10.4M | self.code -= bound; |
114 | 10.4M | self.range -= bound; |
115 | | |
116 | 10.4M | self.normalize()?; |
117 | 10.3M | Ok(true) |
118 | | } |
119 | 39.7M | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::decode_bit Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::decode_bit Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::decode_bit <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::decode_bit Line | Count | Source | 92 | 281k | pub fn decode_bit(&mut self, prob: &mut u16, update: bool) -> io::Result<bool> { | 93 | 281k | let bound: u32 = (self.range >> 11) * (*prob as u32); | 94 | | | 95 | | lzma_trace!( | 96 | | " bound: {:08x}, prob: {:04x}, bit: {}", | 97 | | bound, | 98 | | prob, | 99 | | (self.code > bound) as u8 | 100 | | ); | 101 | 281k | if self.code < bound { | 102 | 170k | if update { | 103 | 24.6k | *prob += (0x800_u16 - *prob) >> 5; | 104 | 145k | } | 105 | 170k | self.range = bound; | 106 | | | 107 | 170k | self.normalize()?; | 108 | 167k | Ok(false) | 109 | | } else { | 110 | 111k | if update { | 111 | 23.8k | *prob -= *prob >> 5; | 112 | 87.8k | } | 113 | 111k | self.code -= bound; | 114 | 111k | self.range -= bound; | 115 | | | 116 | 111k | self.normalize()?; | 117 | 111k | Ok(true) | 118 | | } | 119 | 281k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::decode_bit Line | Count | Source | 92 | 1.08M | pub fn decode_bit(&mut self, prob: &mut u16, update: bool) -> io::Result<bool> { | 93 | 1.08M | let bound: u32 = (self.range >> 11) * (*prob as u32); | 94 | | | 95 | | lzma_trace!( | 96 | | " bound: {:08x}, prob: {:04x}, bit: {}", | 97 | | bound, | 98 | | prob, | 99 | | (self.code > bound) as u8 | 100 | | ); | 101 | 1.08M | if self.code < bound { | 102 | 560k | if update { | 103 | 560k | *prob += (0x800_u16 - *prob) >> 5; | 104 | 560k | } | 105 | 560k | self.range = bound; | 106 | | | 107 | 560k | self.normalize()?; | 108 | 560k | Ok(false) | 109 | | } else { | 110 | 526k | if update { | 111 | 526k | *prob -= *prob >> 5; | 112 | 526k | } | 113 | 526k | self.code -= bound; | 114 | 526k | self.range -= bound; | 115 | | | 116 | 526k | self.normalize()?; | 117 | 526k | Ok(true) | 118 | | } | 119 | 1.08M | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::decode_bit Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::decode_bit <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::decode_bit Line | Count | Source | 92 | 5.28M | pub fn decode_bit(&mut self, prob: &mut u16, update: bool) -> io::Result<bool> { | 93 | 5.28M | let bound: u32 = (self.range >> 11) * (*prob as u32); | 94 | | | 95 | | lzma_trace!( | 96 | | " bound: {:08x}, prob: {:04x}, bit: {}", | 97 | | bound, | 98 | | prob, | 99 | | (self.code > bound) as u8 | 100 | | ); | 101 | 5.28M | if self.code < bound { | 102 | 1.75M | if update { | 103 | 400k | *prob += (0x800_u16 - *prob) >> 5; | 104 | 1.35M | } | 105 | 1.75M | self.range = bound; | 106 | | | 107 | 1.75M | self.normalize()?; | 108 | 1.72M | Ok(false) | 109 | | } else { | 110 | 3.53M | if update { | 111 | 512k | *prob -= *prob >> 5; | 112 | 3.01M | } | 113 | 3.53M | self.code -= bound; | 114 | 3.53M | self.range -= bound; | 115 | | | 116 | 3.53M | self.normalize()?; | 117 | 3.51M | Ok(true) | 118 | | } | 119 | 5.28M | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::decode_bit Line | Count | Source | 92 | 33.0M | pub fn decode_bit(&mut self, prob: &mut u16, update: bool) -> io::Result<bool> { | 93 | 33.0M | let bound: u32 = (self.range >> 11) * (*prob as u32); | 94 | | | 95 | | lzma_trace!( | 96 | | " bound: {:08x}, prob: {:04x}, bit: {}", | 97 | | bound, | 98 | | prob, | 99 | | (self.code > bound) as u8 | 100 | | ); | 101 | 33.0M | if self.code < bound { | 102 | 26.8M | if update { | 103 | 26.8M | *prob += (0x800_u16 - *prob) >> 5; | 104 | 26.8M | } | 105 | 26.8M | self.range = bound; | 106 | | | 107 | 26.8M | self.normalize()?; | 108 | 26.8M | Ok(false) | 109 | | } else { | 110 | 6.24M | if update { | 111 | 6.24M | *prob -= *prob >> 5; | 112 | 6.24M | } | 113 | 6.24M | self.code -= bound; | 114 | 6.24M | self.range -= bound; | 115 | | | 116 | 6.24M | self.normalize()?; | 117 | 6.24M | Ok(true) | 118 | | } | 119 | 33.0M | } |
|
120 | | |
121 | 822k | fn parse_bit_tree( |
122 | 822k | &mut self, |
123 | 822k | num_bits: usize, |
124 | 822k | probs: &mut [u16], |
125 | 822k | update: bool, |
126 | 822k | ) -> io::Result<u32> { |
127 | 822k | let mut tmp: u32 = 1; |
128 | 822k | for _ in 0..num_bits { |
129 | 5.61M | let bit = self.decode_bit(&mut probs[tmp as usize], update)?; |
130 | 5.59M | tmp = (tmp << 1) ^ (bit as u32); |
131 | | } |
132 | 803k | Ok(tmp - (1 << num_bits)) |
133 | 822k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::parse_bit_tree Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::parse_bit_tree Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::parse_bit_tree <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::parse_bit_tree Line | Count | Source | 121 | 12.7k | fn parse_bit_tree( | 122 | 12.7k | &mut self, | 123 | 12.7k | num_bits: usize, | 124 | 12.7k | probs: &mut [u16], | 125 | 12.7k | update: bool, | 126 | 12.7k | ) -> io::Result<u32> { | 127 | 12.7k | let mut tmp: u32 = 1; | 128 | 12.7k | for _ in 0..num_bits { | 129 | 64.5k | let bit = self.decode_bit(&mut probs[tmp as usize], update)?; | 130 | 64.1k | tmp = (tmp << 1) ^ (bit as u32); | 131 | | } | 132 | 12.2k | Ok(tmp - (1 << num_bits)) | 133 | 12.7k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::parse_bit_tree Line | Count | Source | 121 | 38.7k | fn parse_bit_tree( | 122 | 38.7k | &mut self, | 123 | 38.7k | num_bits: usize, | 124 | 38.7k | probs: &mut [u16], | 125 | 38.7k | update: bool, | 126 | 38.7k | ) -> io::Result<u32> { | 127 | 38.7k | let mut tmp: u32 = 1; | 128 | 38.7k | for _ in 0..num_bits { | 129 | 283k | let bit = self.decode_bit(&mut probs[tmp as usize], update)?; | 130 | 283k | tmp = (tmp << 1) ^ (bit as u32); | 131 | | } | 132 | 38.7k | Ok(tmp - (1 << num_bits)) | 133 | 38.7k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::parse_bit_tree Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::parse_bit_tree <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::parse_bit_tree Line | Count | Source | 121 | 322k | fn parse_bit_tree( | 122 | 322k | &mut self, | 123 | 322k | num_bits: usize, | 124 | 322k | probs: &mut [u16], | 125 | 322k | update: bool, | 126 | 322k | ) -> io::Result<u32> { | 127 | 322k | let mut tmp: u32 = 1; | 128 | 322k | for _ in 0..num_bits { | 129 | 1.97M | let bit = self.decode_bit(&mut probs[tmp as usize], update)?; | 130 | 1.96M | tmp = (tmp << 1) ^ (bit as u32); | 131 | | } | 132 | 304k | Ok(tmp - (1 << num_bits)) | 133 | 322k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::parse_bit_tree Line | Count | Source | 121 | 448k | fn parse_bit_tree( | 122 | 448k | &mut self, | 123 | 448k | num_bits: usize, | 124 | 448k | probs: &mut [u16], | 125 | 448k | update: bool, | 126 | 448k | ) -> io::Result<u32> { | 127 | 448k | let mut tmp: u32 = 1; | 128 | 448k | for _ in 0..num_bits { | 129 | 3.28M | let bit = self.decode_bit(&mut probs[tmp as usize], update)?; | 130 | 3.28M | tmp = (tmp << 1) ^ (bit as u32); | 131 | | } | 132 | 448k | Ok(tmp - (1 << num_bits)) | 133 | 448k | } |
|
134 | | |
135 | 63.3k | pub fn parse_reverse_bit_tree( |
136 | 63.3k | &mut self, |
137 | 63.3k | num_bits: usize, |
138 | 63.3k | probs: &mut [u16], |
139 | 63.3k | offset: usize, |
140 | 63.3k | update: bool, |
141 | 63.3k | ) -> io::Result<u32> { |
142 | 63.3k | let mut result = 0u32; |
143 | 63.3k | let mut tmp: usize = 1; |
144 | 231k | for i in 0..num_bits { |
145 | 231k | let bit = self.decode_bit(&mut probs[offset + tmp], update)?; |
146 | 225k | tmp = (tmp << 1) ^ (bit as usize); |
147 | 225k | result ^= (bit as u32) << i; |
148 | | } |
149 | 58.0k | Ok(result) |
150 | 63.3k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::parse_reverse_bit_tree Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::parse_reverse_bit_tree Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<_>>::parse_reverse_bit_tree <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::parse_reverse_bit_tree Line | Count | Source | 135 | 2.27k | pub fn parse_reverse_bit_tree( | 136 | 2.27k | &mut self, | 137 | 2.27k | num_bits: usize, | 138 | 2.27k | probs: &mut [u16], | 139 | 2.27k | offset: usize, | 140 | 2.27k | update: bool, | 141 | 2.27k | ) -> io::Result<u32> { | 142 | 2.27k | let mut result = 0u32; | 143 | 2.27k | let mut tmp: usize = 1; | 144 | 7.44k | for i in 0..num_bits { | 145 | 7.44k | let bit = self.decode_bit(&mut probs[offset + tmp], update)?; | 146 | 6.96k | tmp = (tmp << 1) ^ (bit as usize); | 147 | 6.96k | result ^= (bit as u32) << i; | 148 | | } | 149 | 1.79k | Ok(result) | 150 | 2.27k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::parse_reverse_bit_tree Line | Count | Source | 135 | 2.31k | pub fn parse_reverse_bit_tree( | 136 | 2.31k | &mut self, | 137 | 2.31k | num_bits: usize, | 138 | 2.31k | probs: &mut [u16], | 139 | 2.31k | offset: usize, | 140 | 2.31k | update: bool, | 141 | 2.31k | ) -> io::Result<u32> { | 142 | 2.31k | let mut result = 0u32; | 143 | 2.31k | let mut tmp: usize = 1; | 144 | 6.13k | for i in 0..num_bits { | 145 | 6.13k | let bit = self.decode_bit(&mut probs[offset + tmp], update)?; | 146 | 6.13k | tmp = (tmp << 1) ^ (bit as usize); | 147 | 6.13k | result ^= (bit as u32) << i; | 148 | | } | 149 | 2.31k | Ok(result) | 150 | 2.31k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::parse_reverse_bit_tree Unexecuted instantiation: <lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::parse_reverse_bit_tree <lzma_rs::decode::rangecoder::RangeDecoder<std::io::cursor::Cursor<&[u8]>>>::parse_reverse_bit_tree Line | Count | Source | 135 | 39.3k | pub fn parse_reverse_bit_tree( | 136 | 39.3k | &mut self, | 137 | 39.3k | num_bits: usize, | 138 | 39.3k | probs: &mut [u16], | 139 | 39.3k | offset: usize, | 140 | 39.3k | update: bool, | 141 | 39.3k | ) -> io::Result<u32> { | 142 | 39.3k | let mut result = 0u32; | 143 | 39.3k | let mut tmp: usize = 1; | 144 | 143k | for i in 0..num_bits { | 145 | 143k | let bit = self.decode_bit(&mut probs[offset + tmp], update)?; | 146 | 139k | tmp = (tmp << 1) ^ (bit as usize); | 147 | 139k | result ^= (bit as u32) << i; | 148 | | } | 149 | 34.5k | Ok(result) | 150 | 39.3k | } |
<lzma_rs::decode::rangecoder::RangeDecoder<&mut std::io::cursor::Cursor<&[u8]>>>::parse_reverse_bit_tree Line | Count | Source | 135 | 19.4k | pub fn parse_reverse_bit_tree( | 136 | 19.4k | &mut self, | 137 | 19.4k | num_bits: usize, | 138 | 19.4k | probs: &mut [u16], | 139 | 19.4k | offset: usize, | 140 | 19.4k | update: bool, | 141 | 19.4k | ) -> io::Result<u32> { | 142 | 19.4k | let mut result = 0u32; | 143 | 19.4k | let mut tmp: usize = 1; | 144 | 73.4k | for i in 0..num_bits { | 145 | 73.4k | let bit = self.decode_bit(&mut probs[offset + tmp], update)?; | 146 | 73.4k | tmp = (tmp << 1) ^ (bit as usize); | 147 | 73.4k | result ^= (bit as u32) << i; | 148 | | } | 149 | 19.4k | Ok(result) | 150 | 19.4k | } |
|
151 | | } |
152 | | |
153 | | // TODO: parametrize by constant and use [u16; 1 << num_bits] as soon as Rust supports this |
154 | | #[derive(Clone)] |
155 | | pub struct BitTree { |
156 | | num_bits: usize, |
157 | | probs: Vec<u16>, |
158 | | } |
159 | | |
160 | | impl BitTree { |
161 | 447k | pub fn new(num_bits: usize) -> Self { |
162 | 447k | BitTree { |
163 | 447k | num_bits, |
164 | 447k | probs: vec![0x400; 1 << num_bits], |
165 | 447k | } |
166 | 447k | } |
167 | | |
168 | 822k | pub fn parse<R: io::BufRead>( |
169 | 822k | &mut self, |
170 | 822k | rangecoder: &mut RangeDecoder<R>, |
171 | 822k | update: bool, |
172 | 822k | ) -> io::Result<u32> { |
173 | 822k | rangecoder.parse_bit_tree(self.num_bits, self.probs.as_mut_slice(), update) |
174 | 822k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse::<std::io::cursor::Cursor<&[u8]>> Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse::<&mut std::io::cursor::Cursor<&[u8]>> Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse::<_> <lzma_rs::decode::rangecoder::BitTree>::parse::<std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 168 | 12.7k | pub fn parse<R: io::BufRead>( | 169 | 12.7k | &mut self, | 170 | 12.7k | rangecoder: &mut RangeDecoder<R>, | 171 | 12.7k | update: bool, | 172 | 12.7k | ) -> io::Result<u32> { | 173 | 12.7k | rangecoder.parse_bit_tree(self.num_bits, self.probs.as_mut_slice(), update) | 174 | 12.7k | } |
<lzma_rs::decode::rangecoder::BitTree>::parse::<&mut std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 168 | 38.7k | pub fn parse<R: io::BufRead>( | 169 | 38.7k | &mut self, | 170 | 38.7k | rangecoder: &mut RangeDecoder<R>, | 171 | 38.7k | update: bool, | 172 | 38.7k | ) -> io::Result<u32> { | 173 | 38.7k | rangecoder.parse_bit_tree(self.num_bits, self.probs.as_mut_slice(), update) | 174 | 38.7k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse::<std::io::cursor::Cursor<&[u8]>> Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse::<&mut std::io::cursor::Cursor<&[u8]>> <lzma_rs::decode::rangecoder::BitTree>::parse::<std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 168 | 322k | pub fn parse<R: io::BufRead>( | 169 | 322k | &mut self, | 170 | 322k | rangecoder: &mut RangeDecoder<R>, | 171 | 322k | update: bool, | 172 | 322k | ) -> io::Result<u32> { | 173 | 322k | rangecoder.parse_bit_tree(self.num_bits, self.probs.as_mut_slice(), update) | 174 | 322k | } |
<lzma_rs::decode::rangecoder::BitTree>::parse::<&mut std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 168 | 448k | pub fn parse<R: io::BufRead>( | 169 | 448k | &mut self, | 170 | 448k | rangecoder: &mut RangeDecoder<R>, | 171 | 448k | update: bool, | 172 | 448k | ) -> io::Result<u32> { | 173 | 448k | rangecoder.parse_bit_tree(self.num_bits, self.probs.as_mut_slice(), update) | 174 | 448k | } |
|
175 | | |
176 | 46.1k | pub fn parse_reverse<R: io::BufRead>( |
177 | 46.1k | &mut self, |
178 | 46.1k | rangecoder: &mut RangeDecoder<R>, |
179 | 46.1k | update: bool, |
180 | 46.1k | ) -> io::Result<u32> { |
181 | 46.1k | rangecoder.parse_reverse_bit_tree(self.num_bits, self.probs.as_mut_slice(), 0, update) |
182 | 46.1k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse_reverse::<std::io::cursor::Cursor<&[u8]>> Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse_reverse::<&mut std::io::cursor::Cursor<&[u8]>> Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse_reverse::<_> <lzma_rs::decode::rangecoder::BitTree>::parse_reverse::<std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 176 | 2.14k | pub fn parse_reverse<R: io::BufRead>( | 177 | 2.14k | &mut self, | 178 | 2.14k | rangecoder: &mut RangeDecoder<R>, | 179 | 2.14k | update: bool, | 180 | 2.14k | ) -> io::Result<u32> { | 181 | 2.14k | rangecoder.parse_reverse_bit_tree(self.num_bits, self.probs.as_mut_slice(), 0, update) | 182 | 2.14k | } |
<lzma_rs::decode::rangecoder::BitTree>::parse_reverse::<&mut std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 176 | 1.12k | pub fn parse_reverse<R: io::BufRead>( | 177 | 1.12k | &mut self, | 178 | 1.12k | rangecoder: &mut RangeDecoder<R>, | 179 | 1.12k | update: bool, | 180 | 1.12k | ) -> io::Result<u32> { | 181 | 1.12k | rangecoder.parse_reverse_bit_tree(self.num_bits, self.probs.as_mut_slice(), 0, update) | 182 | 1.12k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse_reverse::<std::io::cursor::Cursor<&[u8]>> Unexecuted instantiation: <lzma_rs::decode::rangecoder::BitTree>::parse_reverse::<&mut std::io::cursor::Cursor<&[u8]>> <lzma_rs::decode::rangecoder::BitTree>::parse_reverse::<std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 176 | 27.7k | pub fn parse_reverse<R: io::BufRead>( | 177 | 27.7k | &mut self, | 178 | 27.7k | rangecoder: &mut RangeDecoder<R>, | 179 | 27.7k | update: bool, | 180 | 27.7k | ) -> io::Result<u32> { | 181 | 27.7k | rangecoder.parse_reverse_bit_tree(self.num_bits, self.probs.as_mut_slice(), 0, update) | 182 | 27.7k | } |
<lzma_rs::decode::rangecoder::BitTree>::parse_reverse::<&mut std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 176 | 15.0k | pub fn parse_reverse<R: io::BufRead>( | 177 | 15.0k | &mut self, | 178 | 15.0k | rangecoder: &mut RangeDecoder<R>, | 179 | 15.0k | update: bool, | 180 | 15.0k | ) -> io::Result<u32> { | 181 | 15.0k | rangecoder.parse_reverse_bit_tree(self.num_bits, self.probs.as_mut_slice(), 0, update) | 182 | 15.0k | } |
|
183 | | } |
184 | | |
185 | | pub struct LenDecoder { |
186 | | choice: u16, |
187 | | choice2: u16, |
188 | | low_coder: Vec<BitTree>, |
189 | | mid_coder: Vec<BitTree>, |
190 | | high_coder: BitTree, |
191 | | } |
192 | | |
193 | | impl LenDecoder { |
194 | 111k | pub fn new() -> Self { |
195 | 111k | LenDecoder { |
196 | 111k | choice: 0x400, |
197 | 111k | choice2: 0x400, |
198 | 111k | low_coder: vec![BitTree::new(3); 16], |
199 | 111k | mid_coder: vec![BitTree::new(3); 16], |
200 | 111k | high_coder: BitTree::new(8), |
201 | 111k | } |
202 | 111k | } |
203 | | |
204 | 741k | pub fn decode<R: io::BufRead>( |
205 | 741k | &mut self, |
206 | 741k | rangecoder: &mut RangeDecoder<R>, |
207 | 741k | pos_state: usize, |
208 | 741k | update: bool, |
209 | 741k | ) -> io::Result<usize> { |
210 | 741k | if !rangecoder.decode_bit(&mut self.choice, update)? { |
211 | 94.6k | Ok(self.low_coder[pos_state].parse(rangecoder, update)? as usize) |
212 | 645k | } else if !rangecoder.decode_bit(&mut self.choice2, update)? { |
213 | 55.7k | Ok(self.mid_coder[pos_state].parse(rangecoder, update)? as usize + 8) |
214 | | } else { |
215 | 587k | Ok(self.high_coder.parse(rangecoder, update)? as usize + 16) |
216 | | } |
217 | 741k | } Unexecuted instantiation: <lzma_rs::decode::rangecoder::LenDecoder>::decode::<std::io::cursor::Cursor<&[u8]>> Unexecuted instantiation: <lzma_rs::decode::rangecoder::LenDecoder>::decode::<&mut std::io::cursor::Cursor<&[u8]>> Unexecuted instantiation: <lzma_rs::decode::rangecoder::LenDecoder>::decode::<_> <lzma_rs::decode::rangecoder::LenDecoder>::decode::<std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 204 | 9.21k | pub fn decode<R: io::BufRead>( | 205 | 9.21k | &mut self, | 206 | 9.21k | rangecoder: &mut RangeDecoder<R>, | 207 | 9.21k | pos_state: usize, | 208 | 9.21k | update: bool, | 209 | 9.21k | ) -> io::Result<usize> { | 210 | 9.21k | if !rangecoder.decode_bit(&mut self.choice, update)? { | 211 | 3.52k | Ok(self.low_coder[pos_state].parse(rangecoder, update)? as usize) | 212 | 5.67k | } else if !rangecoder.decode_bit(&mut self.choice2, update)? { | 213 | 2.33k | Ok(self.mid_coder[pos_state].parse(rangecoder, update)? as usize + 8) | 214 | | } else { | 215 | 3.32k | Ok(self.high_coder.parse(rangecoder, update)? as usize + 16) | 216 | | } | 217 | 9.21k | } |
<lzma_rs::decode::rangecoder::LenDecoder>::decode::<&mut std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 204 | 35.9k | pub fn decode<R: io::BufRead>( | 205 | 35.9k | &mut self, | 206 | 35.9k | rangecoder: &mut RangeDecoder<R>, | 207 | 35.9k | pos_state: usize, | 208 | 35.9k | update: bool, | 209 | 35.9k | ) -> io::Result<usize> { | 210 | 35.9k | if !rangecoder.decode_bit(&mut self.choice, update)? { | 211 | 2.60k | Ok(self.low_coder[pos_state].parse(rangecoder, update)? as usize) | 212 | 33.3k | } else if !rangecoder.decode_bit(&mut self.choice2, update)? { | 213 | 1.53k | Ok(self.mid_coder[pos_state].parse(rangecoder, update)? as usize + 8) | 214 | | } else { | 215 | 31.7k | Ok(self.high_coder.parse(rangecoder, update)? as usize + 16) | 216 | | } | 217 | 35.9k | } |
Unexecuted instantiation: <lzma_rs::decode::rangecoder::LenDecoder>::decode::<std::io::cursor::Cursor<&[u8]>> Unexecuted instantiation: <lzma_rs::decode::rangecoder::LenDecoder>::decode::<&mut std::io::cursor::Cursor<&[u8]>> <lzma_rs::decode::rangecoder::LenDecoder>::decode::<std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 204 | 272k | pub fn decode<R: io::BufRead>( | 205 | 272k | &mut self, | 206 | 272k | rangecoder: &mut RangeDecoder<R>, | 207 | 272k | pos_state: usize, | 208 | 272k | update: bool, | 209 | 272k | ) -> io::Result<usize> { | 210 | 272k | if !rangecoder.decode_bit(&mut self.choice, update)? { | 211 | 57.2k | Ok(self.low_coder[pos_state].parse(rangecoder, update)? as usize) | 212 | 213k | } else if !rangecoder.decode_bit(&mut self.choice2, update)? { | 213 | 32.7k | Ok(self.mid_coder[pos_state].parse(rangecoder, update)? as usize + 8) | 214 | | } else { | 215 | 178k | Ok(self.high_coder.parse(rangecoder, update)? as usize + 16) | 216 | | } | 217 | 272k | } |
<lzma_rs::decode::rangecoder::LenDecoder>::decode::<&mut std::io::cursor::Cursor<&[u8]>> Line | Count | Source | 204 | 424k | pub fn decode<R: io::BufRead>( | 205 | 424k | &mut self, | 206 | 424k | rangecoder: &mut RangeDecoder<R>, | 207 | 424k | pos_state: usize, | 208 | 424k | update: bool, | 209 | 424k | ) -> io::Result<usize> { | 210 | 424k | if !rangecoder.decode_bit(&mut self.choice, update)? { | 211 | 31.2k | Ok(self.low_coder[pos_state].parse(rangecoder, update)? as usize) | 212 | 393k | } else if !rangecoder.decode_bit(&mut self.choice2, update)? { | 213 | 19.1k | Ok(self.mid_coder[pos_state].parse(rangecoder, update)? as usize + 8) | 214 | | } else { | 215 | 374k | Ok(self.high_coder.parse(rangecoder, update)? as usize + 16) | 216 | | } | 217 | 424k | } |
|
218 | | } |