Add DSC decompress support

This commit is contained in:
2025-06-12 11:49:08 +08:00
parent d6b6ea32a7
commit 71cdebadd3
6 changed files with 319 additions and 3 deletions

View File

@@ -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> {