]> git.nihav.org Git - nihav.git/commitdiff
introduce NADecoderSupport and buffer pools
authorKostya Shishkov <kostya.shishkov@gmail.com>
Thu, 2 May 2019 11:32:10 +0000 (13:32 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Thu, 2 May 2019 11:32:10 +0000 (13:32 +0200)
37 files changed:
nihav-commonfmt/src/codecs/aac.rs
nihav-commonfmt/src/codecs/atrac3.rs
nihav-commonfmt/src/codecs/clearvideo.rs
nihav-commonfmt/src/codecs/pcm.rs
nihav-commonfmt/src/codecs/sipro.rs
nihav-commonfmt/src/codecs/ts102366.rs
nihav-core/src/codecs/mod.rs
nihav-core/src/frame.rs
nihav-core/src/test/dec_video.rs
nihav-duck/src/codecs/dkadpcm.rs
nihav-duck/src/codecs/truemotion1.rs
nihav-duck/src/codecs/truemotion2.rs
nihav-duck/src/codecs/truemotion2x.rs
nihav-duck/src/codecs/truemotionrt.rs
nihav-game/src/codecs/bmv.rs
nihav-game/src/codecs/bmv3.rs
nihav-game/src/codecs/gremlinvideo.rs
nihav-game/src/codecs/vmd.rs
nihav-indeo/src/codecs/imc.rs
nihav-indeo/src/codecs/indeo2.rs
nihav-indeo/src/codecs/indeo3.rs
nihav-indeo/src/codecs/indeo4.rs
nihav-indeo/src/codecs/indeo5.rs
nihav-indeo/src/codecs/intel263.rs
nihav-rad/src/codecs/bink2.rs
nihav-rad/src/codecs/binkaud.rs
nihav-rad/src/codecs/binkvid.rs
nihav-rad/src/codecs/smacker.rs
nihav-realmedia/src/codecs/cook.rs
nihav-realmedia/src/codecs/ra144.rs
nihav-realmedia/src/codecs/ra288.rs
nihav-realmedia/src/codecs/ralf.rs
nihav-realmedia/src/codecs/rv10.rs
nihav-realmedia/src/codecs/rv20.rs
nihav-realmedia/src/codecs/rv30.rs
nihav-realmedia/src/codecs/rv40.rs
nihav-realmedia/src/codecs/rv60.rs

index 7b3c9034304b8cb8206f418639708b5077ad1ce5..ae7a8e5b61fec03def954a1a9d83a24f4091e027 100644 (file)
@@ -1203,7 +1203,7 @@ impl AACDecoder {
 }
 
 impl NADecoder for AACDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let edata = info.get_extradata().unwrap();
             validate!(edata.len() >= 2);
@@ -1233,7 +1233,7 @@ impl NADecoder for AACDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
index 9cc7dd4a79a536412c4356fd17f7866e30b1e685..eda269a793407b233af4700d5bdd6a1f61fc8945 100644 (file)
@@ -553,7 +553,7 @@ fn interp(a: f32, b: f32, pos: usize) -> f32 {
 }
 
 impl NADecoder for Atrac3Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.info = info.clone();
             let edata = info.get_extradata().unwrap();
@@ -607,7 +607,7 @@ impl NADecoder for Atrac3Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
index ba23148dddd77dfb7b9a77bd2079de31396a2120..67a98639e855b90fb8a4d06cf93df50bd9627bf1 100644 (file)
@@ -681,7 +681,7 @@ impl ClearVideoDecoder {
 }
 
 impl NADecoder for ClearVideoDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if info.get_extradata().is_none() { return Err(DecoderError::InvalidData); }
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
@@ -711,7 +711,7 @@ impl NADecoder for ClearVideoDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         if src.len() <= 1 { return Err(DecoderError::ShortData); }
         let off = if self.is_rm {
index 00f5c3158151082b7457a20c5fb0a6b9c67868cc..7ec3c1f36315f2ba1014b97276ff46b629757943 100644 (file)
@@ -33,7 +33,7 @@ fn get_duration(ainfo: &NAAudioInfo, duration: Option<u64>, data_size: usize) ->
 }
 
 impl NADecoder for PCMDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.chmap = get_default_chmap(ainfo.get_channels());
             if self.chmap.num_channels() == 0 { return Err(DecoderError::InvalidData); }
@@ -42,7 +42,7 @@ impl NADecoder for PCMDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             let duration = get_duration(&ainfo, pkt.get_duration(), pkt.get_buffer().len());
index 88b525e94cc6bc0768c91b00534204c9fb6bb6f1..c36c7ed17297bcbc65cf126ddb540df27662399d 100644 (file)
@@ -638,7 +638,7 @@ fn synth_filter(dst: &mut [f32], doff: usize, filt: &[f32], src: &[f32], len: us
 const CHMAP_MONO: [NAChannelType; 1] = [NAChannelType::C];
 
 impl NADecoder for SiproDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             let mut found = false;
             for i in 0..SIPRO_MODES.len() {
@@ -668,7 +668,7 @@ impl NADecoder for SiproDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
index a4d457024a7b76e9f031e5a8da929f01a8eccc5a..5f6f278571c4b1fa6dc7fe25dbeb9f0988b514a5 100644 (file)
@@ -1157,7 +1157,7 @@ impl AudioBlock {
 }
 
 impl NADecoder for AudioDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             self.info = info.clone();
             Ok(())
@@ -1165,7 +1165,7 @@ impl NADecoder for AudioDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
index 4f81d9eb8a2ffe61c6a8f2b09e65d6cf3b2a359f..8225dd0dcbf08ff18cdf7eddd689458c14596da1 100644 (file)
@@ -229,10 +229,26 @@ impl fmt::Display for MV {
     }
 }
 
+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)]
index 789088a47d4445e91662565fb314661b3d1aa86d..af7b498e92811b1acd1c3697482b32e14aacd46f 100644 (file)
@@ -484,49 +484,89 @@ pub fn copy_buffer(buf: NABufferType) -> NABufferType {
     buf.clone()
 }
 
-pub struct NABufferPool {
-    pool:       Vec<NABufferRef<NABufferType>>,
+pub struct NAVideoBufferPool<T:Copy> {
+    pool:       Vec<NAVideoBufferRef<T>>,
     max_len:    usize,
+    add_len:    usize,
 }
 
-impl NABufferPool {
+impl<T:Copy> NAVideoBufferPool<T> {
     pub fn new(max_len: usize) -> Self {
         Self {
             pool:       Vec::with_capacity(max_len),
             max_len,
+            add_len: 0,
         }
     }
+    pub fn set_dec_bufs(&mut self, add_len: usize) {
+        self.add_len = add_len;
+    }
+    pub fn get_free(&mut self) -> Option<NAVideoBufferRef<T>> {
+        for e in self.pool.iter() {
+            if e.get_num_refs() == 1 {
+                return Some(e.clone());
+            }
+        }
+        None
+    }
+    pub fn get_copy(&mut self, rbuf: &NAVideoBufferRef<T>) -> Option<NAVideoBufferRef<T>> {
+        let res = self.get_free();
+        if res.is_none() {
+            return None;
+        }
+        let mut dbuf = res.unwrap();
+        dbuf.data.copy_from_slice(&rbuf.data);
+        Some(dbuf)
+    }
+    pub fn reset(&mut self) {
+        self.pool.truncate(0);
+    }
+}
+
+impl NAVideoBufferPool<u8> {
     pub fn prealloc_video(&mut self, vinfo: NAVideoInfo, align: u8) -> Result<(), AllocatorError> {
-        let nbufs = self.max_len - self.pool.len();
+        let nbufs = self.max_len + self.add_len - self.pool.len();
         for _ in 0..nbufs {
-            let buf = alloc_video_buffer(vinfo.clone(), align)?;
-            self.pool.push(NABufferRef::new(buf));
+            let vbuf = alloc_video_buffer(vinfo.clone(), align)?;
+            if let NABufferType::Video(buf) = vbuf {
+                self.pool.push(buf);
+            } else if let NABufferType::VideoPacked(buf) = vbuf {
+                self.pool.push(buf);
+            } else {
+                return Err(AllocatorError::FormatError);
+            }
         }
         Ok(())
     }
-    pub fn prealloc_audio(&mut self, ainfo: NAAudioInfo, nsamples: usize, chmap: NAChannelMap) -> Result<(), AllocatorError> {
-        let nbufs = self.max_len - self.pool.len();
+}
+
+impl NAVideoBufferPool<u16> {
+    pub fn prealloc_video(&mut self, vinfo: NAVideoInfo, align: u8) -> Result<(), AllocatorError> {
+        let nbufs = self.max_len + self.add_len - self.pool.len();
         for _ in 0..nbufs {
-            let buf = alloc_audio_buffer(ainfo.clone(), nsamples, chmap.clone())?;
-            self.pool.push(NABufferRef::new(buf));
+            let vbuf = alloc_video_buffer(vinfo.clone(), align)?;
+            if let NABufferType::Video16(buf) = vbuf {
+                self.pool.push(buf);
+            } else {
+                return Err(AllocatorError::FormatError);
+            }
         }
         Ok(())
     }
-    pub fn add(&mut self, buf: NABufferType) -> bool {
-        if self.pool.len() < self.max_len {
-            self.pool.push(NABufferRef::new(buf));
-            true
-        } else {
-            false
-        }
-    }
-    pub fn get_free(&mut self) -> Option<NABufferRef<NABufferType>> {
-        for e in self.pool.iter() {
-            if e.get_num_refs() == 1 {
-                return Some(e.clone());
+}
+
+impl NAVideoBufferPool<u32> {
+    pub fn prealloc_video(&mut self, vinfo: NAVideoInfo, align: u8) -> Result<(), AllocatorError> {
+        let nbufs = self.max_len + self.add_len - self.pool.len();
+        for _ in 0..nbufs {
+            let vbuf = alloc_video_buffer(vinfo.clone(), align)?;
+            if let NABufferType::Video32(buf) = vbuf {
+                self.pool.push(buf);
+            } else {
+                return Err(AllocatorError::FormatError);
             }
         }
-        None
+        Ok(())
     }
 }
 
index 36c032a040d71711c9186713f23d0494699e18f0..d000e527af733628185e4254ba13ed200a54f989 100644 (file)
@@ -161,7 +161,7 @@ pub fn test_file_decoding(demuxer: &str, name: &str, limit: Option<u64>,
     let mut br = ByteReader::new(&mut fr);
     let mut dmx = create_demuxer(dmx_f, &mut br).unwrap();
 
-    let mut decs: Vec<Option<Box<NADecoder>>> = Vec::new();
+    let mut decs: Vec<Option<(Box<NADecoderSupport>, Box<NADecoder>)>> = Vec::new();
     for i in 0..dmx.get_num_streams() {
         let s = dmx.get_stream(i).unwrap();
         let info = s.get_info();
@@ -169,8 +169,9 @@ pub fn test_file_decoding(demuxer: &str, name: &str, limit: Option<u64>,
         if let Some(df) = decfunc {
             if (decode_video && info.is_video()) || (decode_audio && info.is_audio()) {
                 let mut dec = (df)();
-                dec.init(info).unwrap();
-                decs.push(Some(dec));
+                let mut dsupp = Box::new(NADecoderSupport::new());
+                dec.init(&mut dsupp, info).unwrap();
+                decs.push(Some((dsupp, dec)));
             } else {
                 decs.push(None);
             }
@@ -190,8 +191,8 @@ pub fn test_file_decoding(demuxer: &str, name: &str, limit: Option<u64>,
             if pkt.get_pts().unwrap() > limit.unwrap() { break; }
         }
         let streamno = pkt.get_stream().get_id() as usize;
-        if let Some(ref mut dec) = decs[streamno] {
-            let frm = dec.decode(&pkt).unwrap();
+        if let Some((ref mut dsupp, ref mut dec)) = decs[streamno] {
+            let frm = dec.decode(dsupp, &pkt).unwrap();
             if pkt.get_stream().get_info().is_video() && video_pfx.is_some() && frm.get_frame_type() != FrameType::Skip {
                 let pfx = video_pfx.unwrap();
                let pts = if let Some(fpts) = frm.get_pts() { fpts } else { pkt.get_pts().unwrap() };
@@ -218,7 +219,7 @@ pub fn test_decode_audio(demuxer: &str, name: &str, limit: Option<u64>, audio_pf
     let mut br = ByteReader::new(&mut fr);
     let mut dmx = create_demuxer(dmx_f, &mut br).unwrap();
 
-    let mut decs: Vec<Option<Box<NADecoder>>> = Vec::new();
+    let mut decs: Vec<Option<(Box<NADecoderSupport>, Box<NADecoder>)>> = Vec::new();
     for i in 0..dmx.get_num_streams() {
         let s = dmx.get_stream(i).unwrap();
         let info = s.get_info();
@@ -226,8 +227,9 @@ pub fn test_decode_audio(demuxer: &str, name: &str, limit: Option<u64>, audio_pf
         if let Some(df) = decfunc {
             if info.is_audio() {
                 let mut dec = (df)();
-                dec.init(info).unwrap();
-                decs.push(Some(dec));
+                let mut dsupp = Box::new(NADecoderSupport::new());
+                dec.init(&mut dsupp, info).unwrap();
+                decs.push(Some((dsupp, dec)));
             } else {
                 decs.push(None);
             }
@@ -254,8 +256,8 @@ pub fn test_decode_audio(demuxer: &str, name: &str, limit: Option<u64>, audio_pf
             if pkt.get_pts().unwrap() > limit.unwrap() { break; }
         }
         let streamno = pkt.get_stream().get_id() as usize;
-        if let Some(ref mut dec) = decs[streamno] {
-            let frm = dec.decode(&pkt).unwrap();
+        if let Some((ref mut dsupp, ref mut dec)) = decs[streamno] {
+            let frm = dec.decode(dsupp, &pkt).unwrap();
             if frm.get_info().is_audio() {
                 if !wrote_header {
                     wwr.write_header(frm.get_info().as_ref().get_properties().get_audio_info().unwrap()).unwrap();
index 9ff5ed93cecb63987d5364de3b90a5d8697c2121..d3bdba5e644603992b5a6c54ad7e8e890dd78966 100644 (file)
@@ -51,7 +51,7 @@ impl DuckADPCMDecoder {
 }
 
 impl NADecoder for DuckADPCMDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             validate!(ainfo.get_block_len() > 16);
             self.block_len = ainfo.get_block_len();
@@ -69,7 +69,7 @@ impl NADecoder for DuckADPCMDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let pktbuf = pkt.get_buffer();
index c205b3cb9fee5fa51952f836338d60ecc4cb4fd5..f6fe5ca6b765f4a4e025d0ff2b8bb37e7bbfc926 100644 (file)
@@ -515,7 +515,7 @@ impl TM1Decoder {
 }
 
 impl NADecoder for TM1Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(vinfo.get_width(), vinfo.get_height(), false, YUV410_FORMAT));
             self.info = NACodecInfo::new_ref(info.get_name(), myinfo, info.get_extradata()).into_ref();
@@ -524,7 +524,7 @@ impl NADecoder for TM1Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() > 10);
         let hdr_size = (src[0].rotate_left(3) & 0x7F) as usize;
index 1c91640883b7ca4a862351b2ad5e7dc0c68f190c..84162b55ffd87c0a55a1515d64cca48e6fd3ca82 100644 (file)
@@ -546,7 +546,7 @@ impl TM2Decoder {
 }
 
 impl NADecoder for TM2Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(vinfo.get_width(), vinfo.get_height(), false, YUV410_FORMAT));
             self.width  = vinfo.get_width();
@@ -559,7 +559,7 @@ impl NADecoder for TM2Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() >= 40 + (TM2StreamType::Num as usize) * 4 + 4);
         let mut mr = MemoryReader::new_read(&src);
index 560ab6a969d213e69bbe6e1f8b6f65ad75353415..ae2efec3360ca4f24bd0f881d1c704376c17a023 100644 (file)
@@ -556,7 +556,7 @@ impl TM2XDecoder {
 }
 
 impl NADecoder for TM2XDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let fmt = NAPixelFormaton::new(ColorModel::YUV(YUVSubmodel::YUVJ),
                                            Some(NAPixelChromaton::new(0, 0, false, 8, 0, 0, 1)),
@@ -574,7 +574,7 @@ impl NADecoder for TM2XDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() > 8);
         let mut mr = MemoryReader::new_read(&src);
index a96d6099085464d3170564701baf2b637b8df85c..3b4e9e85b3238c28ba5c9666f29f30420d108c30 100644 (file)
@@ -35,7 +35,7 @@ impl TMRTDecoder {
 }
 
 impl NADecoder for TMRTDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(vinfo.get_width(), vinfo.get_height(), false, YUV410_FORMAT));
             self.info = NACodecInfo::new_ref(info.get_name(), myinfo, info.get_extradata()).into_ref();
@@ -44,7 +44,7 @@ impl NADecoder for TMRTDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() > 10);
         let hdr_size = (src[0].rotate_left(3) & 0x7F) as usize;
index 6712ce2615bdf82d03fd9002e5e23c3181adfa18..970f490d48fac162f4fb56ca1e9805ff2689d505 100644 (file)
@@ -169,7 +169,7 @@ impl BMVVideoDecoder {
 }
 
 impl NADecoder for BMVVideoDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(_vinfo) = info.get_properties() {
             let fmt = NAPixelFormaton::new(ColorModel::RGB(RGBSubmodel::RGB),
                                            Some(NAPixelChromaton::new(0, 0, true, 8, 0, 0, 3)),
@@ -185,7 +185,7 @@ impl NADecoder for BMVVideoDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() > 1);
 
@@ -257,7 +257,7 @@ fn scale_sample(samp: u8, scale: i32) -> i16 {
 }
 
 impl NADecoder for BMVAudioDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.ainfo = NAAudioInfo::new(ainfo.get_sample_rate(), ainfo.get_channels(), formats::SND_S16P_FORMAT, 32);
             self.chmap = NAChannelMap::from_str("L,R").unwrap();
@@ -266,7 +266,7 @@ impl NADecoder for BMVAudioDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let pktbuf = pkt.get_buffer();
index 2cd0b2b8868797cf83fcaaddc333943368c88ab5..f6067cf308a663c8d34b2bd8b3ab42e503482cc3 100644 (file)
@@ -441,7 +441,7 @@ impl BMV3VideoDecoder {
 }
 
 impl NADecoder for BMV3VideoDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(vinfo.get_width(), vinfo.get_height(), false, RGB565_FORMAT));
             self.info = NACodecInfo::new_ref(info.get_name(), myinfo, info.get_extradata()).into_ref();
@@ -457,7 +457,7 @@ impl NADecoder for BMV3VideoDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() > 1);
 
@@ -552,7 +552,7 @@ fn decode_block(mode: u8, src: &[u8], dst: &mut [i16], mut pred: i16) -> i16 {
 }
 
 impl NADecoder for BMV3AudioDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.ainfo = NAAudioInfo::new(ainfo.get_sample_rate(), ainfo.get_channels(), formats::SND_S16P_FORMAT, 32);
             self.chmap = NAChannelMap::from_str("L,R").unwrap();
@@ -561,7 +561,7 @@ impl NADecoder for BMV3AudioDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let pktbuf = pkt.get_buffer();
index 8c6e58f29988b61eb1b6a2ff2cbf2a97594fdfd4..2d698cb84858a31d9641dfcf5cac872d96798979 100644 (file)
@@ -371,7 +371,7 @@ impl GremlinVideoDecoder {
 }
 
 impl NADecoder for GremlinVideoDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -401,7 +401,7 @@ impl NADecoder for GremlinVideoDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         let mut mr = MemoryReader::new_read(&src);
         let mut br = ByteReader::new(&mut mr);
@@ -510,7 +510,7 @@ fn get_default_chmap(nch: u8) -> NAChannelMap {
 }
 
 impl NADecoder for GremlinAudioDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.ainfo = NAAudioInfo::new(ainfo.get_sample_rate(), ainfo.get_channels(), formats::SND_S16P_FORMAT, ainfo.get_block_len());
             self.chmap = get_default_chmap(ainfo.get_channels());
@@ -520,7 +520,7 @@ impl NADecoder for GremlinAudioDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let pktbuf = pkt.get_buffer();
index a1e71ed7b7385f355080aadc1d7b38c126d7a5c8..a11e26c0f0df12f93f322f44ea66ec43db558337 100644 (file)
@@ -215,7 +215,7 @@ impl VMDVideoDecoder {
 }
 
 impl NADecoder for VMDVideoDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             self.width  = vinfo.get_width();
             self.height = vinfo.get_height();
@@ -239,7 +239,7 @@ impl NADecoder for VMDVideoDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() >= 10);
 
@@ -351,7 +351,7 @@ impl VMDAudioDecoder {
 }
 
 impl NADecoder for VMDAudioDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             let fmt;
             if ainfo.get_format().get_bits() == 8 {
@@ -372,7 +372,7 @@ impl NADecoder for VMDAudioDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let pktbuf = pkt.get_buffer();
index 5f1390aa6b69445ce24fe232fad5537ad94b92bd..c032b143d52dc9af7b94904079a9be3c96964326 100644 (file)
@@ -865,7 +865,7 @@ const CHMAP_MONO: [NAChannelType; 1] = [NAChannelType::C];
 const CHMAP_STEREO: [NAChannelType; 2] = [NAChannelType::L, NAChannelType::R];
 
 impl NADecoder for IMCDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.chmap = NAChannelMap::new();
             match ainfo.get_channels() {
@@ -886,7 +886,7 @@ impl NADecoder for IMCDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
index d110dc89496eeb5926847b7ce4655b3254d6ea26..c7037180145c0ecd6bfbf76ebc2d82892c9c8c90 100644 (file)
@@ -307,7 +307,7 @@ impl Indeo2Decoder {
 const IR2_START: usize = 48;
 
 impl NADecoder for Indeo2Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -321,7 +321,7 @@ impl NADecoder for Indeo2Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         if src.len() <= IR2_START { return Err(DecoderError::ShortData); }
         let interframe = src[18];
index eaef84b2eb31b76aeb7e0ee75bd98d76b701af98..0a59030b14fc568b998400c2d0303f7ed6db7540 100644 (file)
@@ -688,7 +688,7 @@ const FLAG_KEYFRAME: u16 = 1 << 2;
 const FLAG_NONREF:   u16 = 1 << 8;
 
 impl NADecoder for Indeo3Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -701,7 +701,7 @@ impl NADecoder for Indeo3Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         let mut mr = MemoryReader::new_read(&src);
         let mut br = ByteReader::new(&mut mr);
index 9ee3a411666d5e2f99e13e1572507ea545ca398f..3c8179b64150689c6b5eae4ceb7d4dc5954eb9f5 100644 (file)
@@ -431,7 +431,7 @@ impl Indeo4Decoder {
 }
 
 impl NADecoder for Indeo4Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -444,7 +444,7 @@ impl NADecoder for Indeo4Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         let mut br = BitReader::new(src.as_slice(), src.len(), BitReaderMode::LE);
 
index faa3107fd2df864b49161399828399b245731866..17ac713ca7247799f6199786fdda9c3551b475d9 100644 (file)
@@ -507,7 +507,7 @@ impl Indeo5Decoder {
 }
 
 impl NADecoder for Indeo5Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -520,7 +520,7 @@ impl NADecoder for Indeo5Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         let mut br = BitReader::new(src.as_slice(), src.len(), BitReaderMode::LE);
 
index 7afee94ac602363a7964a2b0e818aa501d998876..ed5b3b7f93a0ce39fbcbc0caf159ccc1bf78a89e 100644 (file)
@@ -364,7 +364,7 @@ impl Intel263Decoder {
 }
 
 impl NADecoder for Intel263Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -376,7 +376,7 @@ impl NADecoder for Intel263Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
 
         if src.len() == 8 {
index d57f8bdaf337b872e622323e1708a25792ca91de..4c71e00d6c5c433f07dcc301e972977c1fca5db0 100644 (file)
@@ -1858,7 +1858,7 @@ fn decode_acs_4blocks_old(br: &mut BitReader, codes: &Bink2Codes, dst: &mut [[f3
 const KB2H_NUM_SLICES: [usize; 4] = [ 2, 3, 4, 8 ];
 
 impl NADecoder for Bink2Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -1914,7 +1914,7 @@ impl NADecoder for Bink2Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
 
         let mut br = BitReader::new(&src, src.len(), BitReaderMode::LE);
index 3d7568c538c86e10aeea10533358523549222b13..c09bcfb0774a77a2440c378220ac4ac2ba93129e 100644 (file)
@@ -178,7 +178,7 @@ const CRITICAL_FREQS: [usize; MAX_BANDS] = [
 const RUN_TAB: [usize; 16] = [ 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 32, 64 ];
 
 impl NADecoder for BinkAudioDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             let srate    = ainfo.get_sample_rate();
             let channels = ainfo.get_channels();
@@ -229,7 +229,7 @@ impl NADecoder for BinkAudioDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let pktbuf = pkt.get_buffer();
index 3a0b4961e43feabcd63bbdd9294f6ec3726f5246..e091b72f92ccee55170700179debee6614ac9591 100644 (file)
@@ -1157,7 +1157,7 @@ const BINK_FLAG_ALPHA:  u32 = 0x00100000;
 const BINK_FLAG_GRAY:   u32 = 0x00020000;
 
 impl NADecoder for BinkDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -1206,7 +1206,7 @@ impl NADecoder for BinkDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
 
         let mut br = BitReader::new(&src, src.len(), BitReaderMode::LE);
index 9ed2a9fa7511e1d9c28fc27d606e77f2c66def6c..f3628bedc6f6e92a1e1a0041dd63056639b596eb 100644 (file)
@@ -387,7 +387,7 @@ impl SmackerVideoDecoder {
 }
 
 impl NADecoder for SmackerVideoDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -434,7 +434,7 @@ impl NADecoder for SmackerVideoDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() >= PAL_SIZE);
 
@@ -492,7 +492,7 @@ impl SmackerAudioDecoder {
 }
 
 impl NADecoder for SmackerAudioDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.bits = ainfo.get_format().get_bits();
             let fmt = if self.bits == 8 { SND_U8_FORMAT } else { SND_S16P_FORMAT };
@@ -504,7 +504,7 @@ impl NADecoder for SmackerAudioDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let src = pkt.get_buffer();
index b954bd7c7d58eb94f48592ccda5743fa24ac9b60..ba3b27689b25954cad634f998eda1cad4303590b 100644 (file)
@@ -551,7 +551,7 @@ impl CookDecoder {
 }
 
 impl NADecoder for CookDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             let edata = info.get_extradata().unwrap();
             validate!(edata.len() >= 4);
@@ -632,7 +632,7 @@ impl NADecoder for CookDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
index 07d234a6dddf4823bdbd90a4516c4cf26cc84552..06da525f48b45842b9265a3dc11d61d893e02425 100644 (file)
@@ -242,7 +242,7 @@ fn clip_out(sample: i16) -> i16 {
 }
 
 impl NADecoder for RA144Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.chmap.add_channels(&CHMAP_MONO);
             self.ainfo = NAAudioInfo::new(ainfo.get_sample_rate(),
@@ -254,7 +254,7 @@ impl NADecoder for RA144Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
index dbb7f90c444c0f97d2ca581ec6c770ddd9ddce84..c3e23d9c244b29a1891314a1698da910ce17e414 100644 (file)
@@ -151,7 +151,7 @@ impl RA288Decoder {
 }
 
 impl NADecoder for RA288Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.chmap.add_channels(&CHMAP_MONO);
             self.ainfo = NAAudioInfo::new(ainfo.get_sample_rate(),
@@ -163,7 +163,7 @@ impl NADecoder for RA288Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
index b8a06d140f1ecd67ba987689b87430c699ed7af9..dfd728d95a65ef377ee149957a186aaa32145d72 100644 (file)
@@ -355,7 +355,7 @@ fn read_block_length(br: &mut BitReader) -> DecoderResult<usize> {
 }
 
 impl NADecoder for RALFDecoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             let edata = info.get_extradata().unwrap();
 
@@ -389,7 +389,7 @@ impl NADecoder for RALFDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
index 733b6776288f53faeb1b5554bf1d1e75e50794b9..66e8ff1ffb7c84391bf9352914dbe7cda20dcc6f 100644 (file)
@@ -403,7 +403,7 @@ impl RealVideo10Decoder {
 }
 
 impl NADecoder for RealVideo10Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -436,7 +436,7 @@ println!("???");
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
 
 //println!(" decode frame size {}, {} slices", src.len(), src[0]+1);
index 44386f6967b4c0a90cc8e11d77920ea9ce8fc2eb..527c23e754a622259ebe53ccac6f8797c1bdb329 100644 (file)
@@ -457,7 +457,7 @@ impl RealVideo20Decoder {
 
 impl NADecoder for RealVideo20Decoder {
 #[allow(unused_variables)]
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -491,7 +491,7 @@ impl NADecoder for RealVideo20Decoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
 
         let mut ibr = RealVideo20BR::new(&src, &self.tables, self.w, self.h, self.minor_ver, self.rpr);
index 7ec3cb23e03bd158d8313a23424f1de0f8ee9a1c..95e619090861b5392e7c042b39438e99d47b1d31 100644 (file)
@@ -117,7 +117,7 @@ impl RealVideo30Decoder {
 }
 
 impl NADecoder for RealVideo30Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let fmt = formats::YUV420_FORMAT;
             let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(0, 0, false, fmt));
@@ -144,7 +144,7 @@ println!("???");
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
 
         let (bufinfo, ftype, pts) = self.dec.parse_frame(src.as_slice(), &mut self.bd)?;
index 482d85680036ee0d8134f11d3c6c7bf444e85d1d..62fafba8056c91f0bb0fa8fca5ad96bfb857cda1 100644 (file)
@@ -314,7 +314,7 @@ impl RealVideo40Decoder {
 }
 
 impl NADecoder for RealVideo40Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let fmt = formats::YUV420_FORMAT;
             let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(0, 0, false, fmt));
@@ -337,7 +337,7 @@ println!("???");
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
 
         let (bufinfo, ftype, ts) = self.dec.parse_frame(src.as_slice(), &mut self.bd)?;
index f064861a761a9dd5908fd9fd675f726657432e64..2ec99ede09c9e4450c8598c86e84b6e5ee116a0c 100644 (file)
@@ -1,6 +1,6 @@
 use nihav_core::formats::YUV420_FORMAT;
 use nihav_core::frame::*;
-use nihav_core::codecs::{NADecoder, MV, ZERO_MV, DecoderError, DecoderResult, IPBShuffler};
+use nihav_core::codecs::{NADecoder, NADecoderSupport, MV, ZERO_MV, DecoderError, DecoderResult, IPBShuffler};
 use nihav_core::io::byteio::{MemoryReader,ByteReader};
 use nihav_core::io::bitreader::{BitReader,BitReaderMode};
 use nihav_core::io::intcode::*;
@@ -1391,7 +1391,7 @@ println!(" left {} bits", br.left());
 }
 
 impl NADecoder for RealVideo60Decoder {
-    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(_vinfo) = info.get_properties() {
             let fmt = YUV420_FORMAT;
             let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(0, 0, false, fmt));
@@ -1418,7 +1418,7 @@ println!("???");
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
 
         validate!(src.len() > 9);