X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fcodecs%2Fmod.rs;h=426cb049f9dffea322999b8b66265594403cf13e;hb=88c03b61673e1b5e7496433b621710a38134c588;hp=7edcf9eb2e6cdb60ea3292f269505eca78908ea3;hpb=b1be9318bde52e93b833ef418bffcbdcb14e9d79;p=nihav.git diff --git a/src/codecs/mod.rs b/src/codecs/mod.rs index 7edcf9e..426cb04 100644 --- a/src/codecs/mod.rs +++ b/src/codecs/mod.rs @@ -1,8 +1,9 @@ #[cfg(feature="decoder_indeo2")] pub mod indeo2; -use std::rc::Rc; use frame::*; +use std::rc::Rc; +use std::cell::RefCell; use io::byteio::ByteIOError; use io::bitreader::BitReaderError; use io::codebook::CodebookError; @@ -36,9 +37,39 @@ impl From for DecoderError { fn from(_: CodebookError) -> Self { DecoderError::InvalidData } } +#[allow(dead_code)] +struct HAMShuffler { + lastframe: Option, +} + +impl HAMShuffler { + #[allow(dead_code)] + fn new() -> Self { HAMShuffler { lastframe: None } } + #[allow(dead_code)] + fn clear(&mut self) { self.lastframe = None; } + #[allow(dead_code)] + fn add_frame(&mut self, frm: NAFrame) { + self.lastframe = Some(Rc::new(RefCell::new(frm))); + } + #[allow(dead_code)] + fn clone_ref(&mut self) -> Option { + match self.lastframe { + Some(ref frm) => Some(Rc::new(RefCell::new(NAFrame::from_copy(&frm.borrow())))), + None => None, + } + } + #[allow(dead_code)] + fn get_output_frame(&mut self) -> Option { + match self.lastframe { + Some(ref frm) => Some(frm.clone()), + None => None, + } + } +} + pub trait NADecoder { fn init(&mut self, info: Rc) -> DecoderResult<()>; - fn decode(&mut self, pkt: &NAPacket) -> DecoderResult>; + fn decode(&mut self, pkt: &NAPacket) -> DecoderResult; } #[derive(Clone,Copy)]