aboutsummaryrefslogtreecommitdiff
path: root/lvc/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-03-07 21:52:04 +0100
committermetamuffin <metamuffin@disroot.org>2023-03-07 21:52:04 +0100
commit755325d6c8faa897ee686452831cb544d6c72d75 (patch)
tree7682fe2f18889fe95674f3de7242c5c1601b266d /lvc/src/main.rs
parentda39ed55e1440fba61122c5fa2262ab9b0a9dd21 (diff)
downloadvideo-codec-experiments-755325d6c8faa897ee686452831cb544d6c72d75.tar
video-codec-experiments-755325d6c8faa897ee686452831cb544d6c72d75.tar.bz2
video-codec-experiments-755325d6c8faa897ee686452831cb544d6c72d75.tar.zst
more magic
Diffstat (limited to 'lvc/src/main.rs')
-rw-r--r--lvc/src/main.rs21
1 files changed, 15 insertions, 6 deletions
diff --git a/lvc/src/main.rs b/lvc/src/main.rs
index 48df911..7ecd4b8 100644
--- a/lvc/src/main.rs
+++ b/lvc/src/main.rs
@@ -6,7 +6,10 @@ use lvc::{
encode::{encode, EncodeConfig},
Block, Frame, Pixel, PixelValue, View, P2,
};
-use std::io::{stdin, stdout, BufReader, BufWriter, Read, Write};
+use std::{
+ io::{stdin, stdout, BufReader, BufWriter, Read, Write},
+ time::Instant,
+};
#[derive(Parser)]
#[clap(about, version)]
@@ -25,8 +28,10 @@ enum Action {
// Compress video
Encode {
#[arg(short, long, default_value_t = 1024)]
- block_size: usize,
- #[arg(short, long, default_value_t = 10_000)]
+ max_block_size: usize,
+ #[arg(short, long, default_value_t = 10)]
+ iters: usize,
+ #[arg(short, long, default_value_t = 20_000)]
threshold: u32,
},
// Decompress video
@@ -68,12 +73,14 @@ fn main() {
}
}
Action::Encode {
- block_size,
+ max_block_size,
threshold,
+ iters,
} => {
let config = EncodeConfig {
threshold,
- max_block_size: block_size,
+ max_block_size,
+ iters,
};
let mut last_frame = Frame::new(size);
@@ -82,10 +89,12 @@ fn main() {
let mut stdout = BufWriter::new(stdout());
for frame_number in 0.. {
- eprintln!("encode frame {frame_number}");
let mut frame = read_frame(&mut stdin, size);
+ let t = Instant::now();
let b: Block = encode(&last_frame, &frame, View::all(size), &config);
+ eprintln!("frame {frame_number} took {:?}", t.elapsed());
+
bincode::encode_into_std_write(&b, &mut stdout, standard()).unwrap();
decode(&last_frame, &mut frame, View::all(size), &b);