first = false;
} else {
scale += i16::from(br.read_cb(&self.codebooks.scale_cb)?);
- validate!((scale >= 0) && (scale < 128));
+ validate!((0..128).contains(&scale));
}
self.scales[cur_band] = scale as u8;
cur_band += 1;
}
Ok(())
}
- #[allow(clippy::cyclomatic_complexity)]
+ #[allow(clippy::cognitive_complexity)]
fn synth_channel(&mut self, chno: usize, dst: &mut [f32]) {
let coeffs = &mut self.coeffs[chno];
let delay = &mut self.delay[chno];
0 | 1 => {
self.imdct_long.imdct_half(coeffs, &mut self.tmp);
overlap_half(dst, &self.tmp, delay, self.win_long);
- (&mut delay[0..COEFFS/2]).copy_from_slice(&self.tmp[COEFFS/2..COEFFS]);
+ delay[0..COEFFS/2].copy_from_slice(&self.tmp[COEFFS/2..COEFFS]);
for i in COEFFS/2..COEFFS {
delay[i] = delay[COEFFS - 1 - i];
}
let idx = if !dir { i } else { bands - 1 - i };
synth_filter(src, tmp, size, step, bands, idx);
}
- (&mut dst[..size]).copy_from_slice(&tmp[..size]);
+ dst[..size].copy_from_slice(&tmp[..size]);
}
fn synth_generic(src: &[f32], dst: &mut [f32], tmpbuf: &mut [f32; COEFFS * 2], is_40khz: bool, size: usize) {
let order = if is_40khz { MERGE_ORDER_40K } else { MERGE_ORDER_44K };
- (&mut dst[..size]).copy_from_slice(&src[..size]);
+ dst[..size].copy_from_slice(&src[..size]);
let mut order_idx = 0;
synth_recursive(dst, tmpbuf, size, order, &mut order_idx, false);
for el in dst.iter_mut().take(COEFFS) { *el *= 0.125; }
if val >= 0 {
qtab[val as usize] * scale
} else {
- -qtab[val.abs() as usize] * scale
+ -qtab[val.unsigned_abs() as usize] * scale
}
}
//let file = "assets/Duck/Cell-140.vp5";
//let file = "assets/Duck/Chocolat-500.vp5";
+ // sample: https://samples.mplayerhq.hu/V-codecs/VP7/potter-500.vp7
let file = "assets/Duck/potter-500.vp7";
test_decode_audio("avi", file, Some(1500), None/*Some("avc")*/, &dmx_reg, &dec_reg);
}