aboutsummaryrefslogtreecommitdiff
path: root/evc/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-01-04 22:48:02 +0100
committermetamuffin <metamuffin@disroot.org>2023-01-04 22:48:02 +0100
commit200f8064e1b1b96acc7d4a6f0f8321b2da5c2830 (patch)
treea0d5d76b1d6604be8eaab31d6e9eef0a01660e68 /evc/src
parent23d6c2d3b56145999c14596733853bc6de49eff3 (diff)
downloadvideo-codec-experiments-200f8064e1b1b96acc7d4a6f0f8321b2da5c2830.tar
video-codec-experiments-200f8064e1b1b96acc7d4a6f0f8321b2da5c2830.tar.bz2
video-codec-experiments-200f8064e1b1b96acc7d4a6f0f8321b2da5c2830.tar.zst
rename thing
Diffstat (limited to 'evc/src')
-rw-r--r--evc/src/bin/decode.rs9
-rw-r--r--evc/src/bin/encode.rs21
-rw-r--r--evc/src/bin/info.rs5
-rw-r--r--evc/src/block.rs3
-rw-r--r--evc/src/codec/decode.rs3
-rw-r--r--evc/src/debug.rs3
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);