aboutsummaryrefslogtreecommitdiff
path: root/evc/src/bin/encode.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-12-06 08:16:09 +0100
committermetamuffin <metamuffin@disroot.org>2022-12-06 08:16:09 +0100
commit5002d0df81f74418665e4e99179ba56d8e78cbe1 (patch)
tree2ece906f886934dd0fc335a4aa31bc5363fa92e8 /evc/src/bin/encode.rs
parentbafb1df8b7764a0a62f1c656eb52fbe7bfd8b8ac (diff)
downloadvideo-codec-experiments-5002d0df81f74418665e4e99179ba56d8e78cbe1.tar
video-codec-experiments-5002d0df81f74418665e4e99179ba56d8e78cbe1.tar.bz2
video-codec-experiments-5002d0df81f74418665e4e99179ba56d8e78cbe1.tar.zst
more codde
Diffstat (limited to 'evc/src/bin/encode.rs')
-rw-r--r--evc/src/bin/encode.rs25
1 files changed, 15 insertions, 10 deletions
diff --git a/evc/src/bin/encode.rs b/evc/src/bin/encode.rs
index c426aba..1934e26 100644
--- a/evc/src/bin/encode.rs
+++ b/evc/src/bin/encode.rs
@@ -1,3 +1,4 @@
+use anyhow::Context;
use clap::Parser;
use evc::{
block::{Block, BlockInner},
@@ -6,7 +7,7 @@ use evc::{
ser::Sink,
view::View,
};
-use std::io::{self, BufReader, BufWriter};
+use std::io::{BufReader, BufWriter};
#[derive(Parser)]
#[clap(about, version)]
@@ -17,28 +18,32 @@ pub struct EncodeArgs {
height: usize,
}
-fn main() -> io::Result<()> {
+fn main() -> anyhow::Result<()> {
let args = EncodeArgs::parse();
let mut input = BufReader::new(std::io::stdin());
let mut output = BufWriter::new(std::io::stdout());
let size = (args.width, args.height);
- output.put(Header {
- resolution: size,
- frame_count: 0,
- })?;
+ output
+ .put(Header {
+ resolution: size,
+ frame_count: 0,
+ })
+ .context("writing header")?;
let mut prev_frame = Frame::new(size);
for i in 0.. {
- println!("frame {i}");
- let frame = Frame::read(&mut input, size)?;
+ eprintln!("encode frame {i}");
+ let frame = Frame::read(&mut input, size)
+ .context("reading raw frame")
+ .unwrap();
let v1 = frame.view((0, 0), size);
let v2 = prev_frame.view((0, 0), size);
let root = encode_block(v1, v2);
- root.write(&mut output)?;
+ root.write(&mut output).context("writing encoded frame")?;
prev_frame = frame;
}
@@ -48,7 +53,7 @@ fn main() -> io::Result<()> {
fn encode_block(view: View<&Frame>, prev: View<&Frame>) -> Block {
let diff = View::diff(&view, &prev) / view.area() as f64;
- eprintln!("{:?} {diff}", view.size);
+ // eprintln!("{:?} {diff}", view.size);
let inner = if diff < 0.5 {
BlockInner::Reference {
translation: (0, 0),