for (i, band_env) in envelope[..num_env_bands].iter_mut().enumerate() {
let delta = br.read_cb(t_cb)?;
let last = match (freq_res, chan.last_freq_res) {
- (true, false) => chan.last_envelope[state.high_to_low_res[i]],
- (false, true) => chan.last_envelope[state.low_to_high_res[i]],
+ (false, true) => chan.last_envelope[state.high_to_low_res[i]],
+ (true, false) => chan.last_envelope[state.low_to_high_res[i]],
_ => chan.last_envelope[i],
};
*band_env = last + delta * scale;
}
}
for (dst, high) in self.low_to_high_res.iter_mut().zip(high_src.iter()) {
- match low_src.binary_search(high) {
- Ok(idx) | Err(idx) => *dst = idx,
- };
+ *dst = match low_src.binary_search(high) {
+ Ok(idx) => idx,
+ Err(idx) => idx - 1,
+ };
}
let num_q = (((hdr.noise_bands as f32) * ((k2 as f32) / (k_x as f32)).log2()).round() as usize).max(1);