diff options
author | metamuffin <metamuffin@disroot.org> | 2022-12-06 08:16:09 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-12-06 08:16:09 +0100 |
commit | 5002d0df81f74418665e4e99179ba56d8e78cbe1 (patch) | |
tree | 2ece906f886934dd0fc335a4aa31bc5363fa92e8 /evc/src/bin/decode.rs | |
parent | bafb1df8b7764a0a62f1c656eb52fbe7bfd8b8ac (diff) | |
download | video-codec-experiments-5002d0df81f74418665e4e99179ba56d8e78cbe1.tar video-codec-experiments-5002d0df81f74418665e4e99179ba56d8e78cbe1.tar.bz2 video-codec-experiments-5002d0df81f74418665e4e99179ba56d8e78cbe1.tar.zst |
more codde
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>) { |