X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-duck%2Fsrc%2Fcodecs%2Fon2avc.rs;h=29ead41d3c1ec9ebf7dd3106fef30495d0e6bf23;hp=dc229b042514988940bee149b811e607bada779f;hb=78fb6560c73965d834b215fb0b49505ae5443288;hpb=fa90ccfb8676a917a02fbb56381f86aa1962d313 diff --git a/nihav-duck/src/codecs/on2avc.rs b/nihav-duck/src/codecs/on2avc.rs index dc229b0..29ead41 100644 --- a/nihav-duck/src/codecs/on2avc.rs +++ b/nihav-duck/src/codecs/on2avc.rs @@ -4,8 +4,8 @@ use nihav_core::io::byteio::read_u16le; use nihav_core::io::bitreader::*; use nihav_core::io::codebook::*; use nihav_core::io::intcode::*; -use nihav_core::dsp::fft::*; -use nihav_core::dsp::mdct::IMDCT; +use nihav_codec_support::dsp::fft::*; +use nihav_codec_support::dsp::mdct::IMDCT; use std::str::FromStr; @@ -220,7 +220,7 @@ impl AVCDecoder { scale = br.read(7)? as i16; first = false } else { - scale += br.read_cb(&self.codebooks.scale_cb)? as i16; + scale += i16::from(br.read_cb(&self.codebooks.scale_cb)?); validate!((scale >= 0) && (scale < 128)); } self.scales[cur_band] = scale as u8; @@ -331,6 +331,7 @@ impl AVCDecoder { } 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]; @@ -490,12 +491,12 @@ macro_rules! synth_step0_template { 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; } } } @@ -511,7 +512,7 @@ fn synth_step1(src: &[f32], dst: &mut [f32], size: usize, stride: usize, step: u { 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) { @@ -683,7 +684,7 @@ fn synth_generic(src: &[f32], dst: &mut [f32], tmpbuf: &mut [f32; COEFFS * 2], i (&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) { @@ -1048,6 +1049,12 @@ impl NADecoder for AVCDecoder { } } +impl NAOptionHandler for AVCDecoder { + fn get_supported_options(&self) -> &[NAOptionDefinition] { &[] } + fn set_options(&mut self, _options: &[NAOption]) { } + fn query_option_value(&self, _name: &str) -> Option { None } +} + pub fn get_decoder_500() -> Box { Box::new(AVCDecoder::new(500)) } @@ -1060,15 +1067,15 @@ pub fn get_decoder_501() -> Box { mod test { use nihav_core::codecs::RegisteredDecoders; use nihav_core::demuxers::RegisteredDemuxers; - use nihav_core::test::dec_video::*; - use crate::codecs::duck_register_all_codecs; - use nihav_commonfmt::demuxers::generic_register_all_demuxers; + use nihav_codec_support::test::dec_video::*; + 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";