diff options
author | metamuffin <metamuffin@disroot.org> | 2025-05-05 15:09:54 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-05-05 15:09:54 +0200 |
commit | 306f96164784a8cbf405e72fa4364d6523366e95 (patch) | |
tree | 51717fc139871baa438aad806f4923669ae0896c /evc/src/bin/decode.rs | |
parent | 9cc089e2d6e841879e430b01d2f3d92c8820523e (diff) | |
download | video-codec-experiments-306f96164784a8cbf405e72fa4364d6523366e95.tar video-codec-experiments-306f96164784a8cbf405e72fa4364d6523366e95.tar.bz2 video-codec-experiments-306f96164784a8cbf405e72fa4364d6523366e95.tar.zst |
old dir
Diffstat (limited to 'evc/src/bin/decode.rs')
-rw-r--r-- | evc/src/bin/decode.rs | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/evc/src/bin/decode.rs b/evc/src/bin/decode.rs deleted file mode 100644 index fbf5624..0000000 --- a/evc/src/bin/decode.rs +++ /dev/null @@ -1,63 +0,0 @@ -#![feature(box_patterns)] -use anyhow::Context; -use clap::Parser; -use indicatif::ProgressBar; -use libreschmux::{ - block::Block, - codec::decode::{decode_block, DecodeConfig}, - debug::draw_debug, - format::{header::Header, ser::Source}, - frame::Frame, -}; -use log::{info, warn}; -use std::io::{BufReader, BufWriter}; - -#[derive(Parser)] -#[clap(about, version)] -pub struct DecodeArgs { - #[arg(long)] - debug: bool, -} - -fn main() -> anyhow::Result<()> { - env_logger::init_from_env("LOG"); - 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>().context("reading header")?; - info!("{header:?}"); - if header.resolution.x * header.resolution.y > 100_000_000 { - warn!("resolution is quite big. video is likely corrupt."); - } - let size = header.resolution; - - let config = DecodeConfig {}; - - let progress_bar = ProgressBar::new(header.frame_count as u64); - - let mut prev = Frame::new(size); - for i in 0..header.frame_count { - info!("decode frame {i}"); - - let block = Block::read(&mut input, size).context("reading encoded frame")?; - let mut frame = Frame::new(size); - - decode_block(&block, frame.view_mut(), prev.view(), &config); - - progress_bar.inc(1); - - if args.debug { - let mut f2 = frame.clone(); - draw_debug(&block, f2.view_mut()); - f2.write(&mut output).context("writing raw frame")?; - } else { - frame.write(&mut output).context("writing raw frame")?; - } - - prev = frame; - } - drop(input); - Ok(()) -} |