switch NACodecInfo to Arc
[nihav.git] / nihav-rad / src / codecs / binkvid.rs
index bf8f201f79abaadd81a459594d522a93caae47aa..2f95ed6b58c1add29a8d1f437e1043663c06e56e 100644 (file)
@@ -474,7 +474,7 @@ impl Default for QuantMats {
 
 #[derive(Default)]
 struct BinkDecoder {
-    info:       Rc<NACodecInfo>,
+    info:       NACodecInfoRef,
     ips:        IPShuffler,
     hams:       HAMShuffler,
 
@@ -719,7 +719,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;
@@ -928,7 +928,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;
@@ -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: Rc<NACodecInfo>) -> DecoderResult<()> {
+    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
             let w = vinfo.get_width();
             let h = vinfo.get_height();
@@ -1192,7 +1192,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);
@@ -1220,7 +1220,7 @@ impl NADecoder for BinkDecoder {
             } else {
                 let bufret = alloc_video_buffer(self.info.get_properties().get_video_info().unwrap(), 4);
                 if let Err(_) = bufret { return Err(DecoderError::InvalidData); }
-                let mut bufinfo = bufret.unwrap();
+                let bufinfo = bufret.unwrap();
                 buf = bufinfo.get_vbuf().unwrap();
                 self.key_frame = true;
                 self.hams.add_frame(buf);
@@ -1229,7 +1229,7 @@ impl NADecoder for BinkDecoder {
         } else {
             let bufret = alloc_video_buffer(self.info.get_properties().get_video_info().unwrap(), 4);
             if let Err(_) = bufret { return Err(DecoderError::InvalidData); }
-            let mut bufinfo = bufret.unwrap();
+            let bufinfo = bufret.unwrap();
             buf = bufinfo.get_vbuf().unwrap();
         }
 
@@ -1253,7 +1253,7 @@ println!("decode frame {} b={} i={}", pkt.get_pts().unwrap(), self.is_ver_b, sel
                 self.decode_plane(&mut br, plane_idx, &mut buf)?;
             }
         }
-        let mut bufinfo = NABufferType::Video(buf);
+        let bufinfo = NABufferType::Video(buf);
         if !self.is_ver_b {
             self.ips.add_frame(bufinfo.get_vbuf().unwrap());
         }