X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcodecs%2Fmod.rs;h=206032e6997b63c5cbb7c9dfc6ee5a916fbf71a9;hb=fedfe17dd8dbe46a8d58097a80f65f59211d7d59;hp=14cb0b31cdce037d779d10adbae7a9276c863bd5;hpb=5c253468a59eed17a04ed9eed23da90f1b1da1a8;p=nihav.git diff --git a/src/codecs/mod.rs b/src/codecs/mod.rs index 14cb0b3..206032e 100644 --- a/src/codecs/mod.rs +++ b/src/codecs/mod.rs @@ -1,5 +1,7 @@ #[cfg(feature="decoder_indeo2")] pub mod indeo2; +#[cfg(feature="decoder_pcm")] +pub mod pcm; use frame::*; use std::rc::Rc; @@ -39,7 +41,7 @@ impl From for DecoderError { #[allow(dead_code)] struct HAMShuffler { - lastframe: Option, + lastframe: Option>, } impl HAMShuffler { @@ -48,13 +50,13 @@ impl HAMShuffler { #[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))); + fn add_frame(&mut self, buf: NAVideoBuffer) { + self.lastframe = Some(buf); } #[allow(dead_code)] - fn clone_ref(&mut self) -> Option { + fn clone_ref(&mut self) -> Option> { if let Some(ref mut frm) = self.lastframe { - let newfrm = Rc::new(RefCell::new(NAFrame::from_copy(&frm.borrow()))); + let newfrm = frm.copy_buffer(); *frm = newfrm.clone(); Some(newfrm) } else { @@ -62,7 +64,7 @@ impl HAMShuffler { } } #[allow(dead_code)] - fn get_output_frame(&mut self) -> Option { + fn get_output_frame(&mut self) -> Option> { match self.lastframe { Some(ref frm) => Some(frm.clone()), None => None, @@ -84,6 +86,8 @@ pub struct DecoderInfo { const DECODERS: &[DecoderInfo] = &[ #[cfg(feature="decoder_indeo2")] DecoderInfo { name: "indeo2", get_decoder: indeo2::get_decoder }, +#[cfg(feature="decoder_pcm")] + DecoderInfo { name: "pcm", get_decoder: pcm::get_decoder }, ]; pub fn find_decoder(name: &str) -> Option Box> {