let start = w * 128 + self.get_band_start(tns_max_bands.min(bottom));
let end = w * 128 + self.get_band_start(tns_max_bands.min(top));
let lpc = &tns_data.coeffs[w][f].coef;
+ let mut state = [0.0f32; 64];
+ let mut sidx = 32;
if !tns_data.coeffs[w][f].direction {
for m in start..end {
- for i in 0..order.min(m) {
- self.coeffs[m] -= self.coeffs[m - i - 1] * lpc[i];
+ for i in 0..order {
+ self.coeffs[m] -= state[(sidx + i) & 63] * lpc[i];
}
+ sidx = (sidx + 63) & 63;
+ state[sidx] = self.coeffs[m];
}
} else {
for m in (start..end).rev() {
- for i in 0..order.min(m) {
- self.coeffs[m] -= self.coeffs[m + i - 1] * lpc[i];
+ for i in 0..order {
+ self.coeffs[m] -= state[(sidx + i) & 63] * lpc[i];
}
+ sidx = (sidx + 63) & 63;
+ state[sidx] = self.coeffs[m];
}
}
}
use nihav_core::codecs::RegisteredDecoders;
use nihav_core::demuxers::RegisteredDemuxers;
use nihav_codec_support::test::dec_video::test_decode_audio;
- use crate::generic_register_all_codecs;
+ use crate::generic_register_all_decoders;
use nihav_realmedia::realmedia_register_all_demuxers;
#[test]
fn test_aac() {
let mut dmx_reg = RegisteredDemuxers::new();
realmedia_register_all_demuxers(&mut dmx_reg);
let mut dec_reg = RegisteredDecoders::new();
- generic_register_all_codecs(&mut dec_reg);
+ generic_register_all_decoders(&mut dec_reg);
// let file = "assets/RV/rv40_weighted_mc.rmvb";
let file = "assets/RV/rv40_weighted_mc_2.rmvb";