]> git.nihav.org Git - nihav.git/blobdiff - src/codecs/mod.rs
proper support for linesizes
[nihav.git] / src / codecs / mod.rs
index d1a970f3eed41c5422a878a4158e8ee1ea1e7084..625485e1ed4ed8382c2957b2bc2f4add44863390 100644 (file)
@@ -8,6 +8,7 @@ use io::codebook::CodebookError;
 #[derive(Debug,Clone,Copy,PartialEq)]
 #[allow(dead_code)]
 pub enum DecoderError {
+    NoFrame,
     TryAgain,
     InvalidData,
     ShortData,
@@ -107,6 +108,8 @@ 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")]
@@ -115,6 +118,8 @@ mod indeo3;
 mod pcm;
 
 const DECODERS: &[DecoderInfo] = &[
+#[cfg(feature="decoder_gdvvid")]
+    DecoderInfo { name: "gdv-video", get_decoder: gremlinvideo::get_decoder },
 #[cfg(feature="decoder_indeo2")]
     DecoderInfo { name: "indeo2", get_decoder: indeo2::get_decoder },
 #[cfg(feature="decoder_indeo3")]
@@ -153,7 +158,7 @@ fn write_pgmyuv(pfx: &str, strno: usize, num: u64, frmref: NAFrameRef) {
     let dta = buf.get_data();
     let ls = buf.get_stride(0);
     let mut idx = 0;
-    let mut idx2 = ls;
+    let mut idx2 = w;
     let mut pad: Vec<u8> = Vec::with_capacity((w - w2 * 2) / 2);
     pad.resize((w - w2 * 2) / 2, 0xFF);
     for _ in 0..h {