diff options
Diffstat (limited to 'evc/src/bin/decode.rs')
-rw-r--r-- | evc/src/bin/decode.rs | 19 |
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>) { |