X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-core%2Fsrc%2Fcodecs%2Fmod.rs;h=311a45ee4165f6cb56567e8acef2b24e7cd57f12;hb=e243ceb4d694cc08767ad70027bb6963f4cefea3;hp=4f81d9eb8a2ffe61c6a8f2b09e65d6cf3b2a359f;hpb=3fc28ece6664a34af9b7f6a52dbf8a8809fa9204;p=nihav.git diff --git a/nihav-core/src/codecs/mod.rs b/nihav-core/src/codecs/mod.rs index 4f81d9e..311a45e 100644 --- a/nihav-core/src/codecs/mod.rs +++ b/nihav-core/src/codecs/mod.rs @@ -162,14 +162,16 @@ impl Default for IPBShuffler { fn default() -> Self { Self { lastframe: None, nextframe: None } } } -#[derive(Debug,Clone,Copy,PartialEq)] +#[derive(Debug,Clone,Copy,Default,PartialEq)] pub struct MV { pub x: i16, pub y: i16, } +#[allow(clippy::many_single_char_names)] +#[allow(clippy::collapsible_if)] impl MV { - pub fn new(x: i16, y: i16) -> Self { MV{ x: x, y: y } } + pub fn new(x: i16, y: i16) -> Self { MV{ x, y } } pub fn pred(a: MV, b: MV, c: MV) -> Self { let x; if a.x < b.x { @@ -199,7 +201,7 @@ impl MV { y = b.y; } } - MV { x: x, y: y } + MV { x, y } } } @@ -229,16 +231,36 @@ impl fmt::Display for MV { } } +pub struct NADecoderSupport { + pub pool_u8: NAVideoBufferPool, + pub pool_u16: NAVideoBufferPool, + pub pool_u32: NAVideoBufferPool, +} + +impl NADecoderSupport { + pub fn new() -> Self { + Self { + pool_u8: NAVideoBufferPool::new(0), + pool_u16: NAVideoBufferPool::new(0), + pool_u32: NAVideoBufferPool::new(0), + } + } +} + +impl Default for NADecoderSupport { + fn default() -> Self { Self::new() } +} + pub trait NADecoder { - fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()>; - fn decode(&mut self, pkt: &NAPacket) -> DecoderResult; + fn init(&mut self, supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()>; + fn decode(&mut self, supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult; } #[derive(Clone,Copy)] pub struct DecoderInfo { pub name: &'static str, - pub get_decoder: fn () -> Box, + pub get_decoder: fn () -> Box, } #[cfg(any(feature="h263"))] @@ -247,6 +269,7 @@ pub mod blockdsp; #[cfg(feature="h263")] pub mod h263; +#[derive(Default)] pub struct RegisteredDecoders { decs: Vec, } @@ -258,7 +281,7 @@ impl RegisteredDecoders { pub fn add_decoder(&mut self, dec: DecoderInfo) { self.decs.push(dec); } - pub fn find_decoder(&self, name: &str) -> Option Box> { + pub fn find_decoder(&self, name: &str) -> Option Box> { for &dec in self.decs.iter() { if dec.name == name { return Some(dec.get_decoder);