mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-07 05:18:44 +08:00
Add DSC decompress support
This commit is contained in:
@@ -3,7 +3,7 @@ use anyhow::Result;
|
||||
use std::io::Write;
|
||||
|
||||
pub struct MsbBitStream<'a> {
|
||||
m_input: MemReaderRef<'a>,
|
||||
pub m_input: MemReaderRef<'a>,
|
||||
m_bits: u32,
|
||||
m_cached_bits: u32,
|
||||
}
|
||||
@@ -28,6 +28,17 @@ impl<'a> MsbBitStream<'a> {
|
||||
let result = (self.m_bits >> self.m_cached_bits) & mask;
|
||||
Ok(result)
|
||||
}
|
||||
|
||||
pub fn get_next_bit(&mut self) -> Result<bool> {
|
||||
if self.m_cached_bits == 0 {
|
||||
let byte = self.m_input.read_u8()?;
|
||||
self.m_bits = (self.m_bits << 8) | byte as u32;
|
||||
self.m_cached_bits += 8;
|
||||
}
|
||||
self.m_cached_bits -= 1;
|
||||
let bit = (self.m_bits >> self.m_cached_bits) & 1 != 0;
|
||||
Ok(bit)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct MsbBitWriter<'a, T: Write> {
|
||||
|
||||
Reference in New Issue
Block a user