replace vec.truncate(0) with vec.clear()
[nihav.git] / nihav-ms / src / codecs / msadpcm.rs
index de6f447068c99f81e60843182facf612c90ca993..a63f4e5a4b9d5661885564d25e5d9ba3199e6f8c 100644 (file)
@@ -3,7 +3,7 @@ use nihav_core::io::byteio::*;
 use std::str::FromStr;
 
 const ADAPT_TABLE: [i32; 16] = [
-    230, 230, 230, 230, 307, 409, 512, 614, 
+    230, 230, 230, 230, 307, 409, 512, 614,
     768, 614, 512, 409, 307, 230, 230, 230
 ];
 const ADAPT_COEFFS: [[i32; 2]; 7] = [
@@ -58,6 +58,7 @@ impl MSADPCMDecoder {
 }
 
 impl NADecoder for MSADPCMDecoder {
+    #[allow(clippy::int_plus_one)]
     fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             self.block_len = ainfo.get_block_len();
@@ -67,7 +68,7 @@ impl NADecoder for MSADPCMDecoder {
             self.block_samps = (self.block_len / channels - 7) * 2 + 2;
             self.ainfo = NAAudioInfo::new(ainfo.get_sample_rate(), channels as u8, SND_S16P_FORMAT, self.block_samps);
             self.chmap = NAChannelMap::from_str(if channels == 1 { "C" } else { "L,R" }).unwrap();
-            self.adapt_coeffs.truncate(0);
+            self.adapt_coeffs.clear();
             if let Some(ref buf) = info.get_extradata() {
                 validate!(buf.len() >= 6);
                 validate!((buf.len() & 3) == 0);
@@ -96,7 +97,7 @@ impl NADecoder for MSADPCMDecoder {
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let pktbuf = pkt.get_buffer();
             let channels = self.chmap.num_channels();
-            validate!(pktbuf.len() > 0 && (pktbuf.len() % self.block_len) == 0);
+            validate!(!pktbuf.is_empty() && (pktbuf.len() % self.block_len) == 0);
             let nblocks = pktbuf.len() / self.block_len;
             let nsamples = nblocks * self.block_samps;
             let abuf = alloc_audio_buffer(self.ainfo, nsamples, self.chmap.clone())?;
@@ -186,7 +187,7 @@ const DEFAULT_BLOCK_LEN: usize = 256;
 impl MSADPCMEncoder {
     fn new() -> Self { Self::default() }
     fn encode_packet(&mut self) -> EncoderResult<NAPacket> {
-        if self.samples.len() == 0 {
+        if self.samples.is_empty() {
             return Err(EncoderError::TryAgain);
         }
         let len = (self.samples.len() / self.channels).min(self.block_len);
@@ -302,9 +303,9 @@ impl NAEncoder for MSADPCMEncoder {
             NACodecTypeInfo::None => {
                 let mut ofmt = EncodeParameters::default();
                 ofmt.format = NACodecTypeInfo::Audio(NAAudioInfo::new(0, 1, SND_S16_FORMAT, DEFAULT_BLOCK_LEN));
-                return Ok(ofmt);
+                Ok(ofmt)
             },
-            NACodecTypeInfo::Video(_) => return Err(EncoderError::FormatError),
+            NACodecTypeInfo::Video(_) => Err(EncoderError::FormatError),
             NACodecTypeInfo::Audio(ainfo) => {
                 let mut outinfo = ainfo;
                 outinfo.channels = outinfo.channels.min(2);
@@ -320,11 +321,11 @@ impl NAEncoder for MSADPCMEncoder {
                 if (outinfo.channels == 1) && ((outinfo.block_len & 1) == 1) {
                     outinfo.block_len += 1;
                 }
-                let mut ofmt = EncodeParameters::default();
+                let mut ofmt = *encinfo;
                 ofmt.format = NACodecTypeInfo::Audio(outinfo);
-                return Ok(ofmt);
+                Ok(ofmt)
             }
-        };
+        }
     }
     fn init(&mut self, stream_id: u32, encinfo: EncodeParameters) -> EncoderResult<NAStreamRef> {
         match encinfo.format {
@@ -346,13 +347,15 @@ impl NAEncoder for MSADPCMEncoder {
                 let soniton = NASoniton::new(4, 0);
                 let out_ainfo = NAAudioInfo::new(ainfo.sample_rate, ainfo.channels, soniton, Self::calc_block_size(self.block_len, self.channels));
                 let info = NACodecInfo::new("ms-adpcm", NACodecTypeInfo::Audio(out_ainfo), None);
-                let stream = NAStream::new(StreamType::Audio, stream_id, info.clone(), self.block_len as u32, ainfo.sample_rate).into_ref();
+                let mut stream = NAStream::new(StreamType::Audio, stream_id, info, self.block_len as u32, ainfo.sample_rate, 0);
+                stream.set_num(stream_id as usize);
+                let stream = stream.into_ref();
 
                 self.stream = Some(stream.clone());
                 self.samples = Vec::with_capacity(self.block_len * self.channels);
                 self.srate = ainfo.sample_rate;
                 self.flush = false;
-                
+
                 Ok(stream)
             },
         }
@@ -416,10 +419,10 @@ mod test {
         let mut dmx_reg = RegisteredDemuxers::new();
         generic_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        ms_register_all_codecs(&mut dec_reg);
+        ms_register_all_decoders(&mut dec_reg);
 
         test_decoding("avi", "ms-adpcm", "assets/MS/dance.avi", None, &dmx_reg, &dec_reg,
-                      ExpectedTestResult::MD5([0x9d6619e1, 0x60d83560, 0xfe5c1fb7, 0xad5d130d]));
+                      ExpectedTestResult::MD5([0xf5e3fc84, 0xbcabc11c, 0x33c6874e, 0xe05ecd14]));
     }
     #[cfg(feature="encoder_ms_adpcm")]
     #[test]
@@ -427,8 +430,8 @@ mod test {
         let mut dmx_reg = RegisteredDemuxers::new();
         generic_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        generic_register_all_codecs(&mut dec_reg);
-        ms_register_all_codecs(&mut dec_reg);
+        generic_register_all_decoders(&mut dec_reg);
+        ms_register_all_decoders(&mut dec_reg);
         let mut mux_reg = RegisteredMuxers::new();
         generic_register_all_muxers(&mut mux_reg);
         let mut enc_reg = RegisteredEncoders::new();
@@ -461,6 +464,7 @@ mod test {
                 tb_den:  0,
                 flags:   0,
             };
-        test_encoding_to_file(&dec_config, &enc_config, enc_params);
+        test_encoding_md5(&dec_config, &enc_config, enc_params, &[],
+                          &[0x82259f45, 0xba7b984a, 0xc03c94e5, 0x00b4312b]);
     }
 }