X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-realmedia%2Fsrc%2Fcodecs%2Fra288.rs;h=624769dd04fc816bec4069789bca69c53c2d1006;hp=c3e23d9c244b29a1891314a1698da910ce17e414;hb=78fb6560c73965d834b215fb0b49505ae5443288;hpb=01613464323864a655c994820d3c43df1954e3b2 diff --git a/nihav-realmedia/src/codecs/ra288.rs b/nihav-realmedia/src/codecs/ra288.rs index c3e23d9..624769d 100644 --- a/nihav-realmedia/src/codecs/ra288.rs +++ b/nihav-realmedia/src/codecs/ra288.rs @@ -38,14 +38,14 @@ fn backfilter(hist: &mut [f32], rec: &mut [f32], filt: &mut [f32], win: &[f32], for i in 0..(order + start + non_rec) { work[i] = win[i] * hist[i]; } - for i in (0..order + 1).rev() { + for i in (0..=order).rev() { let src1 = &work[(order - i)..]; let src2 = &work[order + start - i..]; tmp1[i] = scalarprod(&work[order..], src1, start); tmp2[i] = scalarprod(&work[order + start..], src2, non_rec); } - for i in 0..(order + 1) { + for i in 0..=order { rec[i] = rec[i] * 0.5625 + tmp1[i]; temp[i] = rec[i] + tmp2[i]; } @@ -157,7 +157,7 @@ impl NADecoder for RA288Decoder { self.ainfo = NAAudioInfo::new(ainfo.get_sample_rate(), 1, SND_F32P_FORMAT, NBLOCKS * BLOCKSIZE); - self.info = info.replace_info(NACodecTypeInfo::Audio(self.ainfo.clone())); + self.info = info.replace_info(NACodecTypeInfo::Audio(self.ainfo)); Ok(()) } else { Err(DecoderError::InvalidData) @@ -175,7 +175,7 @@ impl NADecoder for RA288Decoder { let dst = adata.get_data_mut().unwrap(); for (input, output) in pktbuf.chunks(FRAME_SIZE).zip(dst.chunks_mut(NBLOCKS * BLOCKSIZE)) { - let mut br = BitReader::new(input, input.len(), BitReaderMode::LE); + let mut br = BitReader::new(input, BitReaderMode::LE); for (i, block) in output.chunks_mut(BLOCKSIZE).enumerate() { let gain = RA288_GAIN_TAB[br.read(3)? as usize]; @@ -197,9 +197,17 @@ impl NADecoder for RA288Decoder { frm.set_keyframe(true); Ok(frm.into_ref()) } + fn flush(&mut self) { + } +} + +impl NAOptionHandler for RA288Decoder { + 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() -> Box { +pub fn get_decoder() -> Box { Box::new(RA288Decoder::new()) } @@ -207,18 +215,18 @@ pub fn get_decoder() -> Box { mod test { use nihav_core::codecs::RegisteredDecoders; use nihav_core::demuxers::RegisteredDemuxers; - use nihav_core::test::dec_video::*; - use crate::codecs::realmedia_register_all_codecs; - use crate::demuxers::realmedia_register_all_demuxers; + use nihav_codec_support::test::dec_video::*; + use crate::realmedia_register_all_decoders; + use crate::realmedia_register_all_demuxers; #[test] fn test_ra288() { let mut dmx_reg = RegisteredDemuxers::new(); realmedia_register_all_demuxers(&mut dmx_reg); let mut dec_reg = RegisteredDecoders::new(); - realmedia_register_all_codecs(&mut dec_reg); + realmedia_register_all_decoders(&mut dec_reg); let file = "assets/RV/A0000044.rm"; - test_decode_audio("realmedia", file, Some(5000), "ra28.8", &dmx_reg, &dec_reg); + test_decode_audio("realmedia", file, Some(5000), None/*Some("ra28.8")*/, &dmx_reg, &dec_reg); } }