aac: clear M/S flags
[nihav.git] / nihav-game / src / codecs / vmd.rs
index 939dcd6d25891b719160d9375628cbd930afcfd3..9492c62fb6a171f51c390a0ea94b822974a62888 100644 (file)
@@ -308,10 +308,10 @@ impl NADecoder for VMDVideoDecoder {
             let paloff = buf.get_offset(1);
             let data = buf.get_data_mut().unwrap();
             for (inrow, outrow) in self.framebuf.chunks(self.width).zip(data.chunks_mut(stride)) {
-                (&mut outrow[..self.width]).copy_from_slice(inrow);
+                outrow[..self.width].copy_from_slice(inrow);
             }
             if !self.is_24bit {
-                (&mut data[paloff..][..768]).copy_from_slice(&self.pal);
+                data[paloff..][..768].copy_from_slice(&self.pal);
             }
             videobuf = if !self.is_24bit { NABufferType::Video(buf) } else { NABufferType::VideoPacked(buf) };
         } else {
@@ -451,7 +451,7 @@ impl NADecoder for VMDAudioDecoder {
             let edata = info.get_extradata();
             let flags = if let Some(ref buf) = edata {
                     validate!(buf.len() >= 2);
-                    (buf[0] as u16) | ((buf[1] as u16) << 8)
+                    u16::from(buf[0]) | (u16::from(buf[1]) << 8)
                 } else {
                     0
                 };
@@ -480,13 +480,15 @@ impl NADecoder for VMDAudioDecoder {
                 }
             };
             self.ainfo = NAAudioInfo::new(ainfo.get_sample_rate(), ainfo.get_channels(), fmt, ainfo.get_block_len());
-            self.info = info.replace_info(NACodecTypeInfo::Audio(self.ainfo.clone()));
+            self.info = info.replace_info(NACodecTypeInfo::Audio(self.ainfo));
             self.chmap = NAChannelMap::from_str(if channels == 1 { "C" } else { "L,R" }).unwrap();
             Ok(())
         } else {
             Err(DecoderError::InvalidData)
         }
     }
+    #[allow(clippy::identity_op)]
+    #[allow(clippy::cognitive_complexity)]
     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() {
@@ -517,8 +519,8 @@ impl NADecoder for VMDAudioDecoder {
                 VMDAudioMode::DPCM => {
                     let mut adata = abuf.get_abuf_i16().unwrap();
                     let off1 = adata.get_offset(1);
-                    let mut dst = adata.get_data_mut().unwrap();
-                    self.decode_16bit(&mut dst, off1, &mut br, nblocks, mask)?;
+                    let dst = adata.get_data_mut().unwrap();
+                    self.decode_16bit(dst, off1, &mut br, nblocks, mask)?;
                 },
                 VMDAudioMode::U8 => {
                     let mut adata = abuf.get_abuf_u8().unwrap();
@@ -688,14 +690,15 @@ mod test {
     use nihav_core::codecs::RegisteredDecoders;
     use nihav_core::demuxers::RegisteredDemuxers;
     use nihav_codec_support::test::dec_video::*;
-    use crate::game_register_all_codecs;
+    use crate::game_register_all_decoders;
     use crate::game_register_all_demuxers;
+    // samples from https://samples.mplayerhq.hu/game-formats/sierra-vmd/ and various games
     #[test]
     fn test_vmd_video() {
         let mut dmx_reg = RegisteredDemuxers::new();
         game_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        game_register_all_codecs(&mut dec_reg);
+        game_register_all_decoders(&mut dec_reg);
 
         test_decoding("vmd", "vmd-video", "assets/Game/2832.VMD", Some(10), &dmx_reg, &dec_reg,
                       ExpectedTestResult::MD5Frames(vec![
@@ -716,7 +719,7 @@ mod test {
         let mut dmx_reg = RegisteredDemuxers::new();
         game_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        game_register_all_codecs(&mut dec_reg);
+        game_register_all_decoders(&mut dec_reg);
 
         test_decoding("vmd", "vmd-video", "assets/Game/HLP1000.VMD", Some(10), &dmx_reg, &dec_reg,
                       ExpectedTestResult::MD5Frames(vec![
@@ -732,7 +735,7 @@ mod test {
         let mut dmx_reg = RegisteredDemuxers::new();
         game_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        game_register_all_codecs(&mut dec_reg);
+        game_register_all_decoders(&mut dec_reg);
 
         test_decoding("vmd", "vmd-video", "assets/Game/02C.VMD", None, &dmx_reg, &dec_reg,
                       ExpectedTestResult::MD5([0xb580782c, 0xd7fb98c0, 0xaf9b83cc, 0xaea0846b]));
@@ -742,7 +745,7 @@ mod test {
         let mut dmx_reg = RegisteredDemuxers::new();
         game_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        game_register_all_codecs(&mut dec_reg);
+        game_register_all_decoders(&mut dec_reg);
 
         test_decoding("vmd", "vmd-audio", "assets/Game/1491.VMD", None, &dmx_reg, &dec_reg,
                       ExpectedTestResult::MD5([0x75037601, 0xbc7b3976, 0x6e1c948b, 0xf05a3d6c]));
@@ -752,7 +755,7 @@ mod test {
         let mut dmx_reg = RegisteredDemuxers::new();
         game_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        game_register_all_codecs(&mut dec_reg);
+        game_register_all_decoders(&mut dec_reg);
 
         test_decoding("vmd", "vmd-audio", "assets/Game/2832.VMD", None, &dmx_reg, &dec_reg,
                       ExpectedTestResult::MD5([0x32dcdf0e, 0xee058684, 0x43ed5bf1, 0x2ff18b5a]));
@@ -762,7 +765,7 @@ mod test {
         let mut dmx_reg = RegisteredDemuxers::new();
         game_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        game_register_all_codecs(&mut dec_reg);
+        game_register_all_decoders(&mut dec_reg);
 
         test_decoding("vmd", "vmd-audio", "assets/Game/1000.VMD", None, &dmx_reg, &dec_reg,
                       ExpectedTestResult::MD5([0xc36215d3, 0x96530a80, 0x89f1fa8e, 0x49da302b]));
@@ -772,7 +775,7 @@ mod test {
         let mut dmx_reg = RegisteredDemuxers::new();
         game_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        game_register_all_codecs(&mut dec_reg);
+        game_register_all_decoders(&mut dec_reg);
 
         test_decoding("vmd", "vmd-audio", "assets/Game/HLP1000.VMD", None, &dmx_reg, &dec_reg,
                       ExpectedTestResult::MD5([0x76a00405, 0xe4e5378d, 0x495b2a68, 0x4dffe042]));