Make BitReader rely on passed slice size without the additional arguments.
[nihav.git] / nihav-duck / src / codecs / on2avc.rs
index 8273437320f7e61502e5c1e2ede792f445471644..dc229b042514988940bee149b811e607bada779f 100644 (file)
@@ -1012,7 +1012,7 @@ impl NADecoder for AVCDecoder {
         if self.version == 500 {
             abuf = alloc_audio_buffer(self.ainfo, COEFFS, self.chmap.clone())?;
             let mut adata = abuf.get_abuf_f32().unwrap();
-            let mut br = BitReader::new(src.as_slice(), src.len(), BitReaderMode::BE);
+            let mut br = BitReader::new(src.as_slice(), BitReaderMode::BE);
             self.decode_frame(&mut br, &mut adata, 0)?;
         } else {
             let mut offsets: Vec<usize> = Vec::new();
@@ -1034,7 +1034,7 @@ impl NADecoder for AVCDecoder {
             let mut adata = abuf.get_abuf_f32().unwrap();
             let mut aoffset = 0;
             for (o, s) in offsets.iter().zip(sizes.iter()) {
-                let mut br = BitReader::new(&src[*o..], *s, BitReaderMode::BE);
+                let mut br = BitReader::new(&src[*o..][..*s], BitReaderMode::BE);
                 self.decode_frame(&mut br, &mut adata, aoffset)?;
                 aoffset += COEFFS;
             }
@@ -1048,11 +1048,11 @@ impl NADecoder for AVCDecoder {
     }
 }
 
-pub fn get_decoder_500() -> Box<dyn NADecoder> {
+pub fn get_decoder_500() -> Box<dyn NADecoder + Send> {
     Box::new(AVCDecoder::new(500))
 }
 
-pub fn get_decoder_501() -> Box<dyn NADecoder> {
+pub fn get_decoder_501() -> Box<dyn NADecoder + Send> {
     Box::new(AVCDecoder::new(501))
 }
 
@@ -1073,7 +1073,7 @@ mod test {
         //let file = "assets/Duck/Cell-140.vp5";
         //let file = "assets/Duck/Chocolat-500.vp5";
         let file = "assets/Duck/potter-500.vp7";
-        test_decode_audio("avi", file, Some(1500), "avc", &dmx_reg, &dec_reg);
+        test_decode_audio("avi", file, Some(1500), None/*Some("avc")*/, &dmx_reg, &dec_reg);
     }
 }