aboutsummaryrefslogtreecommitdiff
path: root/evc/src/bin/decode.rs
diff options
context:
space:
mode:
Diffstat (limited to 'evc/src/bin/decode.rs')
-rw-r--r--evc/src/bin/decode.rs19
1 files changed, 11 insertions, 8 deletions
diff --git a/evc/src/bin/decode.rs b/evc/src/bin/decode.rs
index 293181a..0a00426 100644
--- a/evc/src/bin/decode.rs
+++ b/evc/src/bin/decode.rs
@@ -1,6 +1,5 @@
#![feature(box_patterns)]
-use std::io::{self, BufReader, BufWriter};
-
+use anyhow::Context;
use clap::Parser;
use evc::{
block::{Block, BlockInner},
@@ -9,24 +8,26 @@ use evc::{
ser::Source,
view::View,
};
+use std::io::{BufReader, BufWriter};
#[derive(Parser)]
#[clap(about, version)]
pub struct DecodeArgs {}
-fn main() -> io::Result<()> {
+fn main() -> anyhow::Result<()> {
let _args = DecodeArgs::parse();
let mut input = BufReader::new(std::io::stdin());
let mut output = BufWriter::new(std::io::stdout());
- let header = input.get::<Header>()?;
+ let header = input.get::<Header>().context("reading header")?;
eprintln!("{header:?}");
let size = header.resolution;
-
+
let mut prev = Frame::new(size);
- loop {
- let block = Block::read(&mut input, size)?;
+ for i in 0.. {
+ eprintln!("decode frame {i}");
+ let block = Block::read(&mut input, size).context("reading encoded frame")?;
let mut frame = Frame::new(size);
blit_block(
@@ -35,9 +36,11 @@ fn main() -> io::Result<()> {
prev.view((0, 0), size),
);
- frame.write(&mut output)?;
+ frame.write(&mut output).context("writing raw frame")?;
prev = frame;
}
+ drop(input);
+ Ok(())
}
fn blit_block(block: &Block, mut target: View<&mut Frame>, prev: View<&Frame>) {