mirror of
https://github.com/widberg/bff
synced 2026-08-23 14:26:03 -04:00
Use lz4_flex
This commit is contained in:
parent
82da18c6f4
commit
a91aab85bc
3 changed files with 13 additions and 51 deletions
21
Cargo.lock
generated
21
Cargo.lock
generated
|
|
@ -133,7 +133,7 @@ dependencies = [
|
|||
"impl-trait-for-tuples",
|
||||
"indexmap",
|
||||
"itertools",
|
||||
"lz4",
|
||||
"lz4_flex",
|
||||
"mimalloc",
|
||||
"num-traits",
|
||||
"pastey",
|
||||
|
|
@ -709,23 +709,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
|
||||
|
||||
[[package]]
|
||||
name = "lz4"
|
||||
version = "1.28.1"
|
||||
name = "lz4_flex"
|
||||
version = "0.11.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a20b523e860d03443e98350ceaac5e71c6ba89aea7d960769ec3ce37f4de5af4"
|
||||
dependencies = [
|
||||
"lz4-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lz4-sys"
|
||||
version = "1.11.1+lz4-1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
]
|
||||
checksum = "373f5eceeeab7925e0c1098212f2fbc4d416adec9d35051a6ab251e824c1854a"
|
||||
|
||||
[[package]]
|
||||
name = "manyhow"
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ hound = "3.5.1"
|
|||
impl-trait-for-tuples = "0.2.2"
|
||||
indexmap = { version = "2.0.0", features = ["serde"] }
|
||||
itertools = "0.14.0"
|
||||
lz4 = "1.24.0"
|
||||
lz4_flex = { version = "0.11", default-features = false, features = ["std"] }
|
||||
num-traits = "0.2.15"
|
||||
pastey = "0.2.1"
|
||||
petgraph = "0.8.1"
|
||||
|
|
|
|||
|
|
@ -39,23 +39,7 @@ pub fn lz4_decompress_body_parser(
|
|||
#[binrw::writer(writer)]
|
||||
pub fn lz4_compress_data_writer(data: &[u8]) -> BinResult<()> {
|
||||
// TODO: Not the same parameters used by the game.
|
||||
let compress_bound = unsafe { lz4::liblz4::LZ4_compressBound(data.len() as i32) as usize };
|
||||
let mut compressed_buffer: Vec<u8> = Vec::with_capacity(compress_bound);
|
||||
unsafe {
|
||||
let result = lz4::liblz4::LZ4_compress_default(
|
||||
data.as_ptr() as *const i8,
|
||||
compressed_buffer.as_mut_ptr() as *mut i8,
|
||||
data.len() as i32,
|
||||
compressed_buffer.capacity() as i32,
|
||||
);
|
||||
if result < 0 {
|
||||
return BinResult::Err(binrw::Error::AssertFail {
|
||||
pos: writer.stream_position()?,
|
||||
message: format!("LZ4 compression failed with code {}", result),
|
||||
});
|
||||
}
|
||||
compressed_buffer.set_len(result as usize);
|
||||
}
|
||||
let compressed_buffer = lz4_flex::block::compress(data);
|
||||
writer.write_all(&compressed_buffer)?;
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -95,22 +79,13 @@ pub fn lz4_decompress_data_parser(
|
|||
if compressed_size != 0 {
|
||||
let compressed_buffer =
|
||||
Vec::<u8>::read_args(reader, args! { count: compressed_size as usize })?;
|
||||
let mut decompressed_buffer: Vec<u8> = Vec::with_capacity(decompressed_size as usize);
|
||||
unsafe {
|
||||
let result = lz4::liblz4::LZ4_decompress_safe(
|
||||
compressed_buffer.as_ptr() as *const i8,
|
||||
decompressed_buffer.as_mut_ptr() as *mut i8,
|
||||
compressed_size as i32,
|
||||
decompressed_size as i32,
|
||||
);
|
||||
if result < 0 {
|
||||
return BinResult::Err(binrw::Error::AssertFail {
|
||||
pos: reader.stream_position()?,
|
||||
message: format!("LZ4 decompression failed with code {}", result),
|
||||
});
|
||||
}
|
||||
decompressed_buffer.set_len(result as usize);
|
||||
}
|
||||
let decompressed_buffer =
|
||||
lz4_flex::block::decompress(&compressed_buffer, decompressed_size as usize).map_err(
|
||||
|e| binrw::Error::AssertFail {
|
||||
pos: reader.stream_position().unwrap_or_default(),
|
||||
message: format!("LZ4 decompression failed: {}", e),
|
||||
},
|
||||
)?;
|
||||
if decompressed_buffer.len() != decompressed_size as usize {
|
||||
return BinResult::Err(binrw::Error::AssertFail {
|
||||
pos: reader.stream_position()?,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue