X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fcodecs%2Fmod.rs;fp=src%2Fcodecs%2Fmod.rs;h=4bfc503fe846550a409b3941c2fffd1feeb3645d;hb=32007ad9122cd9be6018dfb66628520d6cf322c8;hp=6572f2690dc81f03b67ecbf13f32287e76cc4a35;hpb=507f4b11fa4dbb6ad5fc1e62dd85317c64a3b9f4;p=nihav.git diff --git a/src/codecs/mod.rs b/src/codecs/mod.rs index 6572f26..4bfc503 100644 --- a/src/codecs/mod.rs +++ b/src/codecs/mod.rs @@ -1,6 +1,7 @@ use frame::*; use std::rc::Rc; use std::cell::RefCell; +use std::mem; use io::byteio::ByteIOError; use io::bitreader::BitReaderError; use io::codebook::CodebookError; @@ -102,6 +103,40 @@ impl IPShuffler { } } +#[allow(dead_code)] +struct IPBShuffler { + lastframe: Option>, + nextframe: Option>, +} + +impl IPBShuffler { + #[allow(dead_code)] + fn new() -> Self { IPBShuffler { lastframe: None, nextframe: None } } + #[allow(dead_code)] + fn clear(&mut self) { self.lastframe = None; self.nextframe = None; } + #[allow(dead_code)] + fn add_frame(&mut self, buf: NAVideoBuffer) { + mem::swap(&mut self.lastframe, &mut self.nextframe); + self.lastframe = Some(buf); + } + #[allow(dead_code)] + fn get_lastref(&mut self) -> Option> { + if let Some(ref frm) = self.lastframe { + Some(frm.clone()) + } else { + None + } + } + #[allow(dead_code)] + fn get_nextref(&mut self) -> Option> { + if let Some(ref frm) = self.nextframe { + Some(frm.clone()) + } else { + None + } + } +} + pub trait NADecoder { fn init(&mut self, info: Rc) -> DecoderResult<()>; fn decode(&mut self, pkt: &NAPacket) -> DecoderResult;