binkvid: remove debug statements
[nihav.git] / nihav-rad / src / codecs / binkvid.rs
index 90d1d53b8dae977d56a2b955c9a36c9869c727c7..3b9879177f63d5e051e4d17e4c246d538bc9ee6e 100644 (file)
@@ -3,6 +3,7 @@ use nihav_core::codecs::*;
 use nihav_core::io::byteio::*;
 use nihav_core::io::bitreader::*;
 use nihav_core::io::codebook::*;
+use nihav_codec_support::codecs::{IPShuffler, HAMShuffler};
 
 const SKIP_BLOCK: u8 = 0;
 const SCALED_BLOCK: u8 = 1;
@@ -30,7 +31,7 @@ impl Tree {
             if br.read_bool()? {
                 let len                         = br.read(3)? as usize;
                 let mut present: [bool; 16] = [false; 16];
-                for i in 0..len+1 {
+                for i in 0..=len {
                     self.syms[i]                = br.read(4)? as u8;
                     present[self.syms[i] as usize] = true;
                 }
@@ -44,7 +45,7 @@ impl Tree {
                 let len                         = br.read(2)? as usize;
                 let mut syms: [u8; 16] = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
                 let mut tmp: [u8; 16] = [0; 16];
-                for bits in 0..len+1 {
+                for bits in 0..=len {
                     let size = 1 << bits;
                     for arr in syms.chunks_mut(size * 2) {
                         let mut ptr0 = 0;
@@ -125,7 +126,6 @@ impl<T:Copy> Bundle<T> {
             self.dec_pos = self.data.len();
             self.read_pos = self.data.len() - 1;
         }
-println!("    read {} of {} bits", len, self.bits);
         Ok(len)
     }
     fn get_val(&mut self) -> DecoderResult<T> {
@@ -474,7 +474,7 @@ impl Default for QuantMats {
 
 #[derive(Default)]
 struct BinkDecoder {
-    info:       Rc<NACodecInfo>,
+    info:       NACodecInfoRef,
     ips:        IPShuffler,
     hams:       HAMShuffler,
 
@@ -574,25 +574,15 @@ impl BinkDecoder {
     }
     fn read_bundles_binkb(&mut self, br: &mut BitReader) -> DecoderResult<()> {
         self.btype.read_binkb(br)?;
-println!("   @ {}", br.tell());
         self.colors.read_binkb(br)?;
-println!("   @ {}", br.tell());
         self.pattern.read_binkb(br)?;
-println!("   @ {}", br.tell());
         self.xoff.read_binkb(br)?;
-println!("   @ {}", br.tell());
         self.yoff.read_binkb(br)?;
-println!("   @ {}", br.tell());
         self.intradc.read_binkb(br)?;
-println!("   @ {}", br.tell());
         self.interdc.read_binkb(br)?;
-println!("   @ {}", br.tell());
         self.intraq.read_binkb(br)?;
-println!("   @ {}", br.tell());
         self.interq.read_binkb(br)?;
-println!("   @ {}", br.tell());
         self.nresidues.read_binkb(br)?;
-println!("   @ {}", br.tell());
         Ok(())
     }
     fn read_bundles(&mut self, br: &mut BitReader) -> DecoderResult<()> {
@@ -656,7 +646,6 @@ println!("   @ {}", br.tell());
         let ybias = if self.key_frame { -15 } else { 0 };
         let yoff = yoff1 + ybias;
 
-println!("     copy from {}.{} + {},{}({})", bx*8, by*8, xoff, yoff, ybias);
         let xpos = ((bx * 8) as isize) + (xoff as isize);
         let ypos = ((by * 8) as isize) + (yoff as isize);
         validate!((xpos >= 0) && (xpos + 8 <= (self.cur_w as isize)));
@@ -719,7 +708,7 @@ println!("     copy from {}.{} + {},{}({})", bx*8, by*8, xoff, yoff, ybias);
         let stride = buf.get_stride(plane_no);
         let mut off = buf.get_offset(plane_no);
         let (width, height) = buf.get_dimensions(plane_no);
-        let mut data = buf.get_data_mut();
+        let data = buf.get_data_mut().unwrap();
         let dst = data.as_mut_slice();
         let bw = (width  + 7) >> 3;
         let bh = (height + 7) >> 3;
@@ -727,14 +716,11 @@ println!("     copy from {}.{} + {},{}({})", bx*8, by*8, xoff, yoff, ybias);
         self.cur_h = (height + 7) & !7;
         self.cur_plane = plane_no;
         self.init_bundle_lengths_binkb();
-println!(" plane {}", plane_no);
         for by in 0..bh {
             self.read_bundles_binkb(br)?;
-println!("  bline {} @ {}", by, br.tell());
             for bx in 0..bw {
                 let mut coeffs: [i32; 64] = [0; 64];
                 let btype = self.btype.get_val()?;
-println!("  blk {}.{} type {}", bx,by,btype);
                 match btype {
                     0 => { // skip
                         },
@@ -928,7 +914,7 @@ println!("  blk {}.{} type {}", bx,by,btype);
         let stride = buf.get_stride(plane_no);
         let mut off = buf.get_offset(plane_no);
         let (width, height) = buf.get_dimensions(plane_no);
-        let mut data = buf.get_data_mut();
+        let data = buf.get_data_mut().unwrap();
         let dst = data.as_mut_slice();
         let bw = (width  + 7) >> 3;
         let bh = (height + 7) >> 3;
@@ -1053,7 +1039,7 @@ fn read_dct_coefficients(br: &mut BitReader, block: &mut [i32; 64], scan: &[usiz
     let q_index = if let Some(qidx) = q { qidx } else { br.read(4)? as usize };
     let qmat = &quant_matrices[q_index];
     block[0] = block[0].wrapping_mul(qmat[0]) >> 11;
-    for idx in coef_idx.into_iter().take(coef_count) {
+    for idx in coef_idx.iter().take(coef_count) {
         block[scan[*idx]] = block[scan[*idx]].wrapping_mul(qmat[*idx]) >> 11;
     }
 
@@ -1149,7 +1135,7 @@ fn read_residue(br: &mut BitReader, block: &mut [i32; 64], mut masks_count: usiz
         }
         mask >>= 1;
     }
-    
+
     Ok(())
 }
 
@@ -1157,7 +1143,7 @@ const BINK_FLAG_ALPHA:  u32 = 0x00100000;
 const BINK_FLAG_GRAY:   u32 = 0x00020000;
 
 impl NADecoder for BinkDecoder {
-    fn init(&mut self, info: Rc<NACodecInfo>) -> 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();
@@ -1192,7 +1178,7 @@ impl NADecoder for BinkDecoder {
                                            None, None, None, None, 0, 1);
             }
             let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(w, h, false, fmt));
-            self.info = Rc::new(NACodecInfo::new_ref(info.get_name(), myinfo, info.get_extradata()));
+            self.info = NACodecInfo::new_ref(info.get_name(), myinfo, info.get_extradata()).into_ref();
 
             //self.init_bundle_lengths(w.max(8), (w + 7) >> 3);
             self.init_bundle_bufs((w + 7) >> 3, (h + 7) >> 3);
@@ -1206,10 +1192,10 @@ 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);
+        let mut br = BitReader::new(&src, BitReaderMode::LE);
 
         let mut buf;
         self.key_frame = pkt.is_keyframe();
@@ -1218,22 +1204,17 @@ impl NADecoder for BinkDecoder {
             if let Some(bbuf) = bufret {
                 buf = bbuf;
             } else {
-                let bufret = alloc_video_buffer(self.info.get_properties().get_video_info().unwrap(), 4);
-                if let Err(_) = bufret { return Err(DecoderError::InvalidData); }
-                let bufinfo = bufret.unwrap();
+                let bufinfo = alloc_video_buffer(self.info.get_properties().get_video_info().unwrap(), 4)?;
                 buf = bufinfo.get_vbuf().unwrap();
                 self.key_frame = true;
                 self.hams.add_frame(buf);
                 buf = self.hams.get_output_frame().unwrap();
             }
         } else {
-            let bufret = alloc_video_buffer(self.info.get_properties().get_video_info().unwrap(), 4);
-            if let Err(_) = bufret { return Err(DecoderError::InvalidData); }
-            let bufinfo = bufret.unwrap();
+            let bufinfo = alloc_video_buffer(self.info.get_properties().get_video_info().unwrap(), 4)?;
             buf = bufinfo.get_vbuf().unwrap();
         }
 
-println!("decode frame {} b={} i={}", pkt.get_pts().unwrap(), self.is_ver_b, self.is_ver_i);
         let nplanes = if self.is_gray { 1 } else { 3 };
         if self.has_alpha {
             validate!(!self.is_ver_b);
@@ -1260,11 +1241,14 @@ println!("decode frame {} b={} i={}", pkt.get_pts().unwrap(), self.is_ver_b, sel
 
         let mut frm = NAFrame::new_from_pkt(pkt, self.info.clone(), bufinfo);
         frm.set_frame_type(FrameType::P);
-        Ok(Rc::new(RefCell::new(frm)))
+        Ok(frm.into_ref())
+    }
+    fn flush(&mut self) {
+        self.ips.clear();
     }
 }
 
-pub fn get_decoder() -> Box<NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
     Box::new(BinkDecoder::new())
 }
 
@@ -1272,9 +1256,9 @@ pub fn get_decoder() -> Box<NADecoder> {
 mod test {
     use nihav_core::codecs::RegisteredDecoders;
     use nihav_core::demuxers::RegisteredDemuxers;
-    use nihav_core::test::dec_video::*;
-    use crate::codecs::rad_register_all_codecs;
-    use crate::demuxers::rad_register_all_demuxers;
+    use nihav_codec_support::test::dec_video::*;
+    use crate::rad_register_all_codecs;
+    use crate::rad_register_all_demuxers;
     #[test]
     fn test_binkvid() {
         let mut dmx_reg = RegisteredDemuxers::new();