X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-game%2Fsrc%2Fcodecs%2Fvx.rs;h=057f61769afe7b72e832ca697d67fde337375205;hb=6f2630992fe340ad1a122ec10c649f756e478185;hp=977e4e188c83dc39b8aef0eb823f4d7ef5124c36;hpb=4d6935baf33c49a39b89ae73e7e3cc509e11b35c;p=nihav.git diff --git a/nihav-game/src/codecs/vx.rs b/nihav-game/src/codecs/vx.rs index 977e4e1..057f617 100644 --- a/nihav-game/src/codecs/vx.rs +++ b/nihav-game/src/codecs/vx.rs @@ -1119,8 +1119,7 @@ impl AudioState { } fn apply_lpc(dst: &mut [i32], src: &[i32], hist: &mut [i32], filt: &[i32; 8]) { - let mut hidx = 0; - for (out, src) in dst.iter_mut().zip(src.iter()) { + for (hidx, (out, src)) in dst.iter_mut().zip(src.iter()).enumerate() { let mut sum = *src << 14; for i in 0..8 { sum += hist[(hidx + i) & 7] * filt[i]; @@ -1128,7 +1127,6 @@ fn apply_lpc(dst: &mut [i32], src: &[i32], hist: &mut [i32], filt: &[i32; 8]) { let samp = sum >> 14; *out = samp; hist[hidx & 7] = samp; - hidx += 1; } } @@ -1199,10 +1197,10 @@ impl VXAudioDecoder { f0[i] = (pfilt[i] + f1 [i]) >> 1; f2[i] = (f1 [i] + cfilt[i]) >> 1; } - apply_lpc(&mut cur_buf[ 0..][..32], &prev_buf[128..], &mut self.lpc_hist, &f0); + apply_lpc(&mut cur_buf[ 0..][..32], &prev_buf[128..], &mut self.lpc_hist, &f0); apply_lpc(&mut cur_buf[32..][..32], &prev_buf[128 + 32..], &mut self.lpc_hist, &f1); apply_lpc(&mut cur_buf[64..][..32], &prev_buf[128 + 64..], &mut self.lpc_hist, &f2); - apply_lpc(&mut cur_buf[96..][..32], &prev_buf[128 + 96..], &mut self.lpc_hist, &cfilt); + apply_lpc(&mut cur_buf[96..][..32], &prev_buf[128 + 96..], &mut self.lpc_hist, cfilt); Ok(()) } fn decode_intra(&mut self, br: &mut ByteReader, val: u16) -> DecoderResult<()> { @@ -1333,6 +1331,7 @@ mod test { let mut dec_reg = RegisteredDecoders::new(); game_register_all_decoders(&mut dec_reg); + // sample from some game test_decoding("vx", "vxvideo", "assets/Game/bioware.vx", Some(31), &dmx_reg, &dec_reg, ExpectedTestResult::MD5Frames(vec![ [0x33de14fa, 0x00948eb7, 0x028141d7, 0x1d07abd6],