X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-ms%2Fsrc%2Fcodecs%2Fmsadpcm.rs;h=f95a691f0d8d25a1f401e878860420b264a5c5e8;hb=e12dabcd04fc59677660fce8fc9437931d141e93;hp=068dd410fe7708a8a7ca2c5ffb5b348d40140ec2;hpb=f1b0db38037cf1113834afbf5b478bcc4e84c588;p=nihav.git diff --git a/nihav-ms/src/codecs/msadpcm.rs b/nihav-ms/src/codecs/msadpcm.rs index 068dd41..f95a691 100644 --- a/nihav-ms/src/codecs/msadpcm.rs +++ b/nihav-ms/src/codecs/msadpcm.rs @@ -124,11 +124,11 @@ impl NADecoder for MSADPCMDecoder { } for ch in 0..channels { let samp = br.read_u16le()? as i16; - pred[ch].sample2 = i32::from(samp); + pred[ch].sample1 = i32::from(samp); } for ch in 0..channels { let samp = br.read_u16le()? as i16; - pred[ch].sample1 = i32::from(samp); + pred[ch].sample2 = i32::from(samp); } for ch in 0..channels { dst[off[ch]] = pred[ch].sample2 as i16; @@ -267,7 +267,6 @@ impl MSADPCMEncoder { } } self.samples.drain(..len * self.channels); - drop(bw); let ts = NATimeInfo::new(None, None, Some(1), 1, self.srate); Ok(NAPacket::new(self.stream.clone().unwrap(), ts, true, dbuf)) } @@ -310,9 +309,9 @@ impl NAEncoder for MSADPCMEncoder { fn negotiate_format(&self, encinfo: &EncodeParameters) -> EncoderResult { match encinfo.format { NACodecTypeInfo::None => { - let mut ofmt = EncodeParameters::default(); - ofmt.format = NACodecTypeInfo::Audio(NAAudioInfo::new(0, 1, SND_S16_FORMAT, DEFAULT_BLOCK_LEN)); - Ok(ofmt) + Ok(EncodeParameters { + format: NACodecTypeInfo::Audio(NAAudioInfo::new(0, 1, SND_S16_FORMAT, DEFAULT_BLOCK_LEN)), + ..Default::default() }) }, NACodecTypeInfo::Video(_) => Err(EncoderError::FormatError), NACodecTypeInfo::Audio(ainfo) => { @@ -336,6 +335,7 @@ impl NAEncoder for MSADPCMEncoder { } } } + fn get_capabilities(&self) -> u64 { ENC_CAPS_CBR } fn init(&mut self, stream_id: u32, encinfo: EncodeParameters) -> EncoderResult { match encinfo.format { NACodecTypeInfo::None => Err(EncoderError::FormatError), @@ -433,7 +433,7 @@ mod test { ms_register_all_decoders(&mut dec_reg); test_decoding("avi", "ms-adpcm", "assets/MS/dance.avi", None, &dmx_reg, &dec_reg, - ExpectedTestResult::MD5([0xf5e3fc84, 0xbcabc11c, 0x33c6874e, 0xe05ecd14])); + ExpectedTestResult::MD5([0xb1d6f12c, 0x86d2821b, 0x395f6827, 0xb6be93bf])); } #[cfg(feature="encoder_ms_adpcm")] #[test] @@ -448,6 +448,7 @@ mod test { let mut enc_reg = RegisteredEncoders::new(); ms_register_all_encoders(&mut enc_reg); + // sample: https://samples.mplayerhq.hu/V-codecs/RT21/320x240/laser05.avi let dec_config = DecoderTestParams { demuxer: "avi", in_name: "assets/Indeo/laser05.avi",