mirror of
https://github.com/exoticorn/upkr.git
synced 2026-01-21 12:06:41 +01:00
Compare commits
2 Commits
540a91d1ba
...
old-prob-u
| Author | SHA1 | Date | |
|---|---|---|---|
| 22582d43a8 | |||
| f467b6a454 |
@@ -33,13 +33,12 @@ impl<'a> Context<'a> {
|
||||
|
||||
pub fn update(&mut self, bit: bool) {
|
||||
let old = self.state.contexts[self.index];
|
||||
let offset = if !bit {
|
||||
ONE_PROB as i32 >> UPDATE_RATE
|
||||
if bit {
|
||||
self.state.contexts[self.index] =
|
||||
old - ((old as i32 + UPDATE_ADD) >> UPDATE_RATE) as u8;
|
||||
} else {
|
||||
0
|
||||
};
|
||||
|
||||
self.state.contexts[self.index] =
|
||||
(offset + old as i32 - ((old as i32 + UPDATE_ADD) >> UPDATE_RATE)) as u8;
|
||||
self.state.contexts[self.index] =
|
||||
old + (((ONE_PROB as i32 - old as i32) + UPDATE_ADD) >> UPDATE_RATE) as u8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
12
src/main.rs
12
src/main.rs
@@ -10,16 +10,12 @@ fn main() -> Result<()> {
|
||||
Some("pack") => {
|
||||
let level = args.opt_value_from_str(["-l", "--level"])?.unwrap_or(2u8);
|
||||
let use_bitstream = args.contains(["-b", "--bitstream"]);
|
||||
let reverse = args.contains(["-r", "--reverse"]);
|
||||
|
||||
let infile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
|
||||
let outfile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
|
||||
|
||||
let mut data = vec![];
|
||||
File::open(infile)?.read_to_end(&mut data)?;
|
||||
if reverse {
|
||||
data.reverse();
|
||||
}
|
||||
|
||||
let mut pb = pbr::ProgressBar::new(data.len() as u64);
|
||||
pb.set_units(pbr::Units::Bytes);
|
||||
@@ -43,18 +39,14 @@ fn main() -> Result<()> {
|
||||
}
|
||||
Some("unpack") => {
|
||||
let use_bitstream = args.contains(["-b", "--bitstream"]);
|
||||
let reverse = args.contains(["-r", "--reverse"]);
|
||||
|
||||
let infile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
|
||||
let outfile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
|
||||
|
||||
let mut data = vec![];
|
||||
File::open(infile)?.read_to_end(&mut data)?;
|
||||
let mut unpacked_data = upkr::unpack(&data, use_bitstream);
|
||||
if reverse {
|
||||
unpacked_data.reverse();
|
||||
}
|
||||
File::create(outfile)?.write_all(&unpacked_data)?;
|
||||
let packed_data = upkr::unpack(&data, use_bitstream);
|
||||
File::create(outfile)?.write_all(&packed_data)?;
|
||||
}
|
||||
Some(other) => {
|
||||
bail!("Unknown subcommand '{}'", other);
|
||||
|
||||
Reference in New Issue
Block a user