aboutsummaryrefslogtreecommitdiff
path: root/lvc/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-03-07 17:15:49 +0100
committermetamuffin <metamuffin@disroot.org>2023-03-07 17:15:49 +0100
commit414990bb53f5c9e2028d42db46fa641fa606cd86 (patch)
tree67424a3b7aec5e0219ecffec0fa7b0849858c8d2 /lvc/src/main.rs
parent2167abcf72d978b4ac2f08fa7cbbddaada01f165 (diff)
downloadvideo-codec-experiments-414990bb53f5c9e2028d42db46fa641fa606cd86.tar
video-codec-experiments-414990bb53f5c9e2028d42db46fa641fa606cd86.tar.bz2
video-codec-experiments-414990bb53f5c9e2028d42db46fa641fa606cd86.tar.zst
works
Diffstat (limited to 'lvc/src/main.rs')
-rw-r--r--lvc/src/main.rs43
1 files changed, 15 insertions, 28 deletions
diff --git a/lvc/src/main.rs b/lvc/src/main.rs
index 523f22c..413e4a4 100644
--- a/lvc/src/main.rs
+++ b/lvc/src/main.rs
@@ -1,48 +1,35 @@
-use lvc::{diff::{diff, fast_diff}, Frame, Pixel, Ref, View, P2, PixelValue};
-use std::{
- io::{stdin, stdout, BufReader, BufWriter, Read, Write},
- time::Instant,
-};
+use lvc::{debug::draw_debug, decode::decode, encode::encode, Frame, Pixel, PixelValue, View, P2};
+use std::io::{stdin, stdout, BufReader, BufWriter, Read, Write};
fn main() {
let size = P2 { x: 1920, y: 1080 };
- // let frame1 = read_frame(size);
- // let frame2 = read_frame(size);
-
- // encode(&frame1, &frame2, View::all(size));
-
- let mut last_frame = Frame {
- pixels: vec![Pixel::default(); size.area()],
- size,
- };
+ let mut last_frame = Frame::new(size);
+ let mut debug_frame = Some(Frame::new(size));
let mut stdin = BufReader::new(stdin());
let mut stdout = BufWriter::new(stdout());
loop {
- let frame = read_frame(&mut stdin, size);
+ let mut frame = read_frame(&mut stdin, size);
- let t1 = Instant::now();
- let d = diff([&last_frame, &frame], View::all(size), Ref::default());
- let t2 = Instant::now();
- eprintln!("diff {:?} {d}", t2 - t1);
+ let b = encode(&last_frame, &frame, View::all(size));
+ decode(&last_frame, &mut frame, View::all(size), &b);
- let t1 = Instant::now();
- let d = fast_diff([&last_frame, &frame], View::all(size), Ref::default());
- let t2 = Instant::now();
- eprintln!("diff2 {:?} {d}", t2 - t1);
+ if let Some(debug_frame) = &mut debug_frame {
+ debug_frame.pixels.copy_from_slice(&frame.pixels);
+ draw_debug(debug_frame, View::all(size), &b);
+ write_frame(&mut stdout, &debug_frame);
+ } else {
+ write_frame(&mut stdout, &frame);
+ }
- write_frame(&mut stdout, &frame);
last_frame = frame;
}
}
fn read_frame(inp: &mut impl Read, size: P2) -> Frame {
- let mut f = Frame {
- size,
- pixels: vec![Pixel::default(); size.area()],
- };
+ let mut f = Frame::new(size);
for y in 0..size.y {
for x in 0..size.x {