X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fcodecs%2Fmod.rs;h=ec67a4d7a9a38d78b3b2f91d8460528c4f161ee9;hb=cf64af13518ee281beec24f32aa0e36317260b82;hp=625485e1ed4ed8382c2957b2bc2f4add44863390;hpb=df14fb814c8339951aa457c833cfbb14e8ee1da4;p=nihav.git diff --git a/src/codecs/mod.rs b/src/codecs/mod.rs index 625485e..ec67a4d 100644 --- a/src/codecs/mod.rs +++ b/src/codecs/mod.rs @@ -17,7 +17,7 @@ pub enum DecoderError { Bug, } -type DecoderResult = Result; +pub type DecoderResult = Result; impl From for DecoderError { fn from(_: ByteIOError) -> Self { DecoderError::ShortData } @@ -36,6 +36,15 @@ impl From for DecoderError { fn from(_: CodebookError) -> Self { DecoderError::InvalidData } } +macro_rules! validate { + ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } }; +} + +mod blockdsp; +mod blockdec; +mod h263code; +mod h263data; + #[allow(dead_code)] struct HAMShuffler { lastframe: Option>, @@ -104,16 +113,14 @@ pub struct DecoderInfo { get_decoder: fn () -> Box, } -macro_rules! validate { - ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } }; -} - #[cfg(feature="decoder_gdvvid")] mod gremlinvideo; #[cfg(feature="decoder_indeo2")] mod indeo2; #[cfg(feature="decoder_indeo3")] mod indeo3; + +mod intel263; #[cfg(feature="decoder_pcm")] mod pcm; @@ -125,6 +132,8 @@ const DECODERS: &[DecoderInfo] = &[ #[cfg(feature="decoder_indeo3")] DecoderInfo { name: "indeo3", get_decoder: indeo3::get_decoder }, + DecoderInfo { name: "intel263", get_decoder: intel263::get_decoder }, + #[cfg(feature="decoder_pcm")] DecoderInfo { name: "pcm", get_decoder: pcm::get_decoder }, ]; @@ -147,6 +156,7 @@ use std::io::prelude::*; #[allow(dead_code)] fn write_pgmyuv(pfx: &str, strno: usize, num: u64, frmref: NAFrameRef) { let frm = frmref.borrow(); + if let NABufferType::None = frm.get_buffer() { return; } let name = format!("assets/{}out{:02}_{:04}.pgm", pfx, strno, num); let mut ofile = File::create(name).unwrap(); let buf = frm.get_buffer().get_vbuf().unwrap();