let mut cur_band = 0;
let mut scale = 0;
let mut first = true;
- for wg in self.win_grp.iter().take(self.windows) {
- if *wg {
+ for wg in 0..self.windows {
+ if self.win_grp[wg] {
for _ in 0..bands {
if self.cbs[cur_band] == 0 {
- self.scales[cur_band] = 0;
- } else {
- if first {
- scale = br.read(7)? as i16;
- first = false
- } else {
- scale += br.read_cb(&self.codebooks.scale_cb)? as i16;
- validate!((scale >= 0) && (scale < 128));
+ let mut all_zero = true;
+ let mut band2 = cur_band;
+ for wg2 in wg + 1..self.windows {
+ if self.win_grp[wg2] {
+ break;
+ }
+ band2 += bands;
+ if self.cbs[band2] != 0 {
+ all_zero = false;
+ break;
+ }
+ }
+ if all_zero {
+ self.scales[cur_band] = 0;
+ cur_band += 1;
+ continue;
}
- self.scales[cur_band] = scale as u8;
}
+ if first {
+ scale = br.read(7)? as i16;
+ first = false;
+ } else {
+ scale += i16::from(br.read_cb(&self.codebooks.scale_cb)?);
+ validate!((scale >= 0) && (scale < 128));
+ }
+ self.scales[cur_band] = scale as u8;
cur_band += 1;
}
} else {
}
Ok(())
}
+ #[allow(clippy::cyclomatic_complexity)]
fn synth_channel(&mut self, chno: usize, dst: &mut [f32]) {
let coeffs = &mut self.coeffs[chno];
let delay = &mut self.delay[chno];
fn $name(src: &[f32], dst: &mut [f32], step: usize, off: usize, sp: &SynthParams) {
for i in 0..step {
for j in 0..sp.p0 {
- dst[i] += ((src[j] as f64) * $tab[sp.idx][j][i]) as f32;
+ dst[i] += (f64::from(src[j]) * $tab[sp.idx][j][i]) as f32;
}
}
for i in 0..step {
for j in 0..sp.p1 {
- dst[$size - step + i] += ((src[sp.p0 + off + j] as f64) * $tab[sp.idx][sp.p0 + j][i]) as f32;
+ dst[$size - step + i] += (f64::from(src[sp.p0 + off + j]) * $tab[sp.idx][sp.p0 + j][i]) as f32;
}
}
}
{
let mut pos = step - 1;
for _ in 0..off {
- let scale = src[p0] as f64;
+ let scale = f64::from(src[p0]);
p0 += 1;
pos &= size - 1;
for i in 0..pos.min(step) {
(&mut dst[..size]).copy_from_slice(&src[..size]);
let mut order_idx = 0;
synth_recursive(dst, tmpbuf, size, order, &mut order_idx, false);
- for i in 0..COEFFS { dst[i] *= 0.125; }
+ for el in dst.iter_mut().take(COEFFS) { *el *= 0.125; }
}
fn synth1024(dsp: &mut SynthDSP, src: &[f32], dst: &mut [f32], tmpbuf: &mut [f32; COEFFS * 2], is_40khz: bool) {
use nihav_core::codecs::RegisteredDecoders;
use nihav_core::demuxers::RegisteredDemuxers;
use nihav_codec_support::test::dec_video::*;
- use crate::duck_register_all_codecs;
+ use crate::duck_register_all_decoders;
use nihav_commonfmt::generic_register_all_demuxers;
#[test]
fn test_avc() {
let mut dmx_reg = RegisteredDemuxers::new();
generic_register_all_demuxers(&mut dmx_reg);
let mut dec_reg = RegisteredDecoders::new();
- duck_register_all_codecs(&mut dec_reg);
+ duck_register_all_decoders(&mut dec_reg);
//let file = "assets/Duck/Cell-140.vp5";
//let file = "assets/Duck/Chocolat-500.vp5";