X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fcodecs%2Fmod.rs;h=a2c10fe93f013b1f1d5f6cbe21b11e47e508fdc9;hb=d532000c8949263f00e6755c6390b3a65eb81b5c;hp=ddb98e42abcf6a1ea9697df8e35a2f07ca19d23d;hpb=2a4130ba5dc9b9b8c34222997a0298a372578987;p=nihav.git diff --git a/src/codecs/mod.rs b/src/codecs/mod.rs index ddb98e4..a2c10fe 100644 --- a/src/codecs/mod.rs +++ b/src/codecs/mod.rs @@ -1,9 +1,9 @@ #[cfg(feature="decoder_indeo2")] pub mod indeo2; -use std::rc::Rc; use frame::*; -use demuxers::*; +use std::rc::Rc; +use std::cell::RefCell; use io::byteio::ByteIOError; use io::bitreader::BitReaderError; use io::codebook::CodebookError; @@ -37,9 +37,42 @@ 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, buf: NAVideoBuffer) { + self.lastframe = Some(buf); + } + #[allow(dead_code)] + fn clone_ref(&mut self) -> Option> { + if let Some(ref mut frm) = self.lastframe { + let newfrm = frm.copy_buffer(); + *frm = newfrm.clone(); + Some(newfrm) + } else { + 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)]