diff options
Diffstat (limited to 'evc/src')
-rw-r--r-- | evc/src/bin/decode.rs | 9 | ||||
-rw-r--r-- | evc/src/bin/encode.rs | 21 | ||||
-rw-r--r-- | evc/src/bin/info.rs | 5 | ||||
-rw-r--r-- | evc/src/block.rs | 3 | ||||
-rw-r--r-- | evc/src/codec/decode.rs | 3 | ||||
-rw-r--r-- | evc/src/debug.rs | 3 |
6 files changed, 27 insertions, 17 deletions
diff --git a/evc/src/bin/decode.rs b/evc/src/bin/decode.rs index bb76231..4ac4fc8 100644 --- a/evc/src/bin/decode.rs +++ b/evc/src/bin/decode.rs @@ -1,7 +1,8 @@ #![feature(box_patterns)] use anyhow::Context; use clap::Parser; -use evc::{ +use indicatif::ProgressBar; +use libreschmux::{ block::Block, codec::decode::{decode_block, DecodeConfig}, debug::draw_debug, @@ -39,8 +40,10 @@ fn main() -> anyhow::Result<()> { max_threads: args.jobs, }; + let progress_bar = ProgressBar::new(header.frame_count as u64); + let mut prev = Frame::new(size); - for i in 0.. { + for i in 0..header.frame_count { info!("decode frame {i}"); let block = Block::read(&mut input, size).context("reading encoded frame")?; @@ -48,6 +51,8 @@ fn main() -> anyhow::Result<()> { decode_block(&block, frame.view_mut(), prev.view(), &config); + progress_bar.inc(1); + if args.debug { let mut f2 = frame.clone(); draw_debug(&block, f2.view_mut()); diff --git a/evc/src/bin/encode.rs b/evc/src/bin/encode.rs index 135a0e8..e1f6730 100644 --- a/evc/src/bin/encode.rs +++ b/evc/src/bin/encode.rs @@ -1,9 +1,9 @@ use anyhow::Context; use clap::Parser; -use evc::{ +use indicatif::ProgressBar; +use libreschmux::{ codec::{ - compress::compress_block, - decode::decode_block, + decode::{decode_block, DecodeConfig}, encode::{encode_block, EncodeConfig, EncodeMode}, }, format::{header::Header, ser::Sink}, @@ -31,6 +31,9 @@ pub struct EncodeArgs { #[arg(long)] no_translate: bool, + #[arg[short = 'L', long]] + length: Option<usize>, + #[arg(short, long, default_value = "8")] jobs: usize, @@ -67,10 +70,12 @@ fn main() -> anyhow::Result<()> { output .put(Header { resolution: size, - frame_count: 0, + frame_count: args.length.unwrap_or(usize::MAX), }) .context("writing header")?; + let progress_bar = args.length.map(|len| ProgressBar::new(len as u64)); + let mut prev_frame = Frame::new(size); for i in 0.. { info!("encode frame {i}"); @@ -79,7 +84,7 @@ fn main() -> anyhow::Result<()> { let v1 = frame.view(); let v2 = prev_frame.view(); - let (error, mut root) = encode_block(v1, v2, &config); + let (error, root) = encode_block(v1, v2, &config); // compress_block( // &mut root, @@ -97,11 +102,15 @@ fn main() -> anyhow::Result<()> { error / frame.view().area() as f64 ); + if let Some(progress_bar) = &progress_bar { + progress_bar.inc(1); + } + decode_block( &root, frame.view_mut(), prev_frame.view(), - &evc::codec::decode::DecodeConfig { + &DecodeConfig { max_threads: config.max_threads, }, ); diff --git a/evc/src/bin/info.rs b/evc/src/bin/info.rs index 1e1472a..ebd8442 100644 --- a/evc/src/bin/info.rs +++ b/evc/src/bin/info.rs @@ -1,7 +1,6 @@ -use std::io::BufReader; - use anyhow::Context; -use evc::format::{header::Header, ser::Source}; +use libreschmux::format::{header::Header, ser::Source}; +use std::io::BufReader; fn main() { env_logger::init_from_env("LOG"); diff --git a/evc/src/block.rs b/evc/src/block.rs index 69cc460..d0f940b 100644 --- a/evc/src/block.rs +++ b/evc/src/block.rs @@ -59,7 +59,8 @@ impl Block { } pub fn read(source: &mut impl std::io::Read, size: Vec2<isize>) -> anyhow::Result<Self> { - Ok(match source.get::<u8>()? { + let variant = source.get::<u8>()?; + Ok(match variant { 0 => Block::Literal(Vec::read_const_size(source, size.area() as usize)?), 1 => Block::CompressedLiteral(Vec::read(source)?), 2 => Block::Split(Box::new({ diff --git a/evc/src/codec/decode.rs b/evc/src/codec/decode.rs index 087483c..bb2aadf 100644 --- a/evc/src/codec/decode.rs +++ b/evc/src/codec/decode.rs @@ -1,9 +1,8 @@ +use super::compress::lit_decompress; use crate::{ block::Block, frame::Frame, helpers::threading::both_par, refsampler::Sampler, view::View, }; -use super::compress::lit_decompress; - pub struct DecodeConfig { pub max_threads: usize, } diff --git a/evc/src/debug.rs b/evc/src/debug.rs index 96f5777..a7a9545 100644 --- a/evc/src/debug.rs +++ b/evc/src/debug.rs @@ -93,9 +93,6 @@ pub fn draw_debug(block: &Block, mut target: View<&mut Frame>) { transform(target.size.y_only().into()) + target.offset.into(), transform(target.size.into()) + target.offset.into(), ); - if tl.y != tr.y || tl.x != bl.x { - eprintln!("{tl:?} {tr:?} {bl:?} {br:?}"); - } target.draw_box(Pixel::CYAN); target.frame.draw_line(tl, tr, Pixel::MAGENTA); target.frame.draw_line(tr, br, Pixel::MAGENTA); |