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,
}
}
+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),
+ }
+ }
+}
+
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"))]
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);