Make BitReader rely on passed slice size without the additional arguments.
[nihav.git] / nihav-realmedia / src / codecs / rv20.rs
index 81556d88d9c00afddbd3c5c00627a0095480de2c..3b7911089c6c6a609ab6f7ca18ad53de0821fde2 100644 (file)
@@ -78,7 +78,7 @@ impl<'a> RealVideo20BR<'a> {
         let mut slice_offs = Vec::with_capacity(nslices);
         {
             let offs = &src[1..][..nslices * 8];
-            let mut br = BitReader::new(offs, offs.len(), BitReaderMode::BE);
+            let mut br = BitReader::new(offs, BitReaderMode::BE);
             for _ in 0..nslices {
                 br.skip(32).unwrap();
                 let off = br.read(32).unwrap();
@@ -97,7 +97,7 @@ impl<'a> RealVideo20BR<'a> {
             }
         }
         RealVideo20BR {
-            br:         BitReader::new(&src[soff..], src.len() - soff, BitReaderMode::BE),
+            br:         BitReader::new(&src[soff..], BitReaderMode::BE),
             tables,
             num_slices: nslices,
             slice_no:   0,
@@ -503,6 +503,9 @@ impl NADecoder for RealVideo20Decoder {
         frm.set_frame_type(self.dec.get_frame_type());
         Ok(frm.into_ref())
     }
+    fn flush(&mut self) {
+        self.dec.flush();
+    }
 }
 
 struct MBB { blocks: usize, bits: u8 }
@@ -516,7 +519,7 @@ const H263_MBB: &[MBB; 7] = &[
     MBB{ blocks: 65536, bits: 14 },
 ];
 
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
     Box::new(RealVideo20Decoder::new())
 }