]> git.nihav.org Git - nihav.git/blobdiff - nihav-core/src/codecs/mod.rs
add NASimpleVideoFrame and try it in RV60 decoder
[nihav.git] / nihav-core / src / codecs / mod.rs
index 76c683d0a9adae6cb7d0fd97fe9a2e37b7e42961..bf4fbd411edf9032afdd7f511dba364704f5b94f 100644 (file)
@@ -1,9 +1,8 @@
 use std::fmt;
 use std::ops::{Add, AddAssign, Sub, SubAssign};
 
-use crate::frame::*;
-use std::rc::Rc;
-use std::cell::RefCell;
+pub use crate::frame::*;
+pub use std::rc::Rc;
 use std::mem;
 use crate::io::byteio::ByteIOError;
 use crate::io::bitreader::BitReaderError;
@@ -45,10 +44,6 @@ impl From<AllocatorError> for DecoderError {
     fn from(_: AllocatorError) -> Self { DecoderError::AllocError }
 }
 
-macro_rules! validate {
-    ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DecoderError::InvalidData); } };
-}
-
 #[allow(dead_code)]
 pub struct HAMShuffler {
     lastframe: Option<NAVideoBuffer<u8>>,
@@ -82,6 +77,10 @@ impl HAMShuffler {
     }
 }
 
+impl Default for HAMShuffler {
+    fn default() -> Self { Self { lastframe: None } }
+}
+
 #[allow(dead_code)]
 pub struct IPShuffler {
     lastframe: Option<NAVideoBuffer<u8>>,
@@ -106,6 +105,10 @@ impl IPShuffler {
     }
 }
 
+impl Default for IPShuffler {
+    fn default() -> Self { Self { lastframe: None } }
+}
+
 #[allow(dead_code)]
 pub struct IPBShuffler {
     lastframe: Option<NAVideoBuffer<u8>>,
@@ -156,6 +159,10 @@ impl IPBShuffler {
     }
 }
 
+impl Default for IPBShuffler {
+    fn default() -> Self { Self { lastframe: None, nextframe: None } }
+}
+
 #[derive(Debug,Clone,Copy,PartialEq)]
 pub struct MV {
     pub x: i16,
@@ -260,4 +267,7 @@ impl RegisteredDecoders {
         }
         None
     }
+    pub fn iter(&self) -> std::slice::Iter<DecoderInfo> {
+        self.decs.iter()
+    }
 }