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 {
y = b.y;
}
}
- MV { x: x, y: y }
+ MV { x, y }
}
}
}
}
+pub struct NADecoderSupport {
+ pub pool_u8: NAVideoBufferPool<u8>,
+ pub pool_u16: NAVideoBufferPool<u16>,
+ pub pool_u32: NAVideoBufferPool<u32>,
+}
+
+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<NAFrameRef>;
+ fn init(&mut self, supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()>;
+ fn decode(&mut self, supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef>;
}
#[derive(Clone,Copy)]
pub struct DecoderInfo {
pub name: &'static str,
- pub get_decoder: fn () -> Box<NADecoder>,
+ pub get_decoder: fn () -> Box<dyn NADecoder>,
}
#[cfg(any(feature="h263"))]
#[cfg(feature="h263")]
pub mod h263;
+#[derive(Default)]
pub struct RegisteredDecoders {
decs: Vec<DecoderInfo>,
}
pub fn add_decoder(&mut self, dec: DecoderInfo) {
self.decs.push(dec);
}
- pub fn find_decoder(&self, name: &str) -> Option<fn () -> Box<NADecoder>> {
+ pub fn find_decoder(&self, name: &str) -> Option<fn () -> Box<dyn NADecoder>> {
for &dec in self.decs.iter() {
if dec.name == name {
return Some(dec.get_decoder);