X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-duck%2Fsrc%2Fcodecs%2Fon2avc.rs;h=2cd7a8802a190ac7b9a7fe4c65eb7913898767d9;hb=7d57ae2f680d7a1eba7af2ee831f305b2f0f9324;hp=46880fac414b92a2a7adb240a8117dc11169dd11;hpb=80aaa7ef4cf5ce03978f64d07c344e4b18718b1b;p=nihav.git diff --git a/nihav-duck/src/codecs/on2avc.rs b/nihav-duck/src/codecs/on2avc.rs index 46880fa..2cd7a88 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; @@ -1012,7 +1012,7 @@ impl NADecoder for AVCDecoder { if self.version == 500 { abuf = alloc_audio_buffer(self.ainfo, COEFFS, self.chmap.clone())?; let mut adata = abuf.get_abuf_f32().unwrap(); - let mut br = BitReader::new(src.as_slice(), src.len(), BitReaderMode::BE); + let mut br = BitReader::new(src.as_slice(), BitReaderMode::BE); self.decode_frame(&mut br, &mut adata, 0)?; } else { let mut offsets: Vec = Vec::new(); @@ -1034,7 +1034,7 @@ impl NADecoder for AVCDecoder { let mut adata = abuf.get_abuf_f32().unwrap(); let mut aoffset = 0; for (o, s) in offsets.iter().zip(sizes.iter()) { - let mut br = BitReader::new(&src[*o..], *s, BitReaderMode::BE); + let mut br = BitReader::new(&src[*o..][..*s], BitReaderMode::BE); self.decode_frame(&mut br, &mut adata, aoffset)?; aoffset += COEFFS; } @@ -1044,13 +1044,21 @@ impl NADecoder for AVCDecoder { frm.set_keyframe(true); Ok(frm.into_ref()) } + fn flush(&mut self) { + } +} + +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 { +pub fn get_decoder_500() -> Box { Box::new(AVCDecoder::new(500)) } -pub fn get_decoder_501() -> Box { +pub fn get_decoder_501() -> Box { Box::new(AVCDecoder::new(501)) } @@ -1058,9 +1066,9 @@ 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_codecs; + use nihav_commonfmt::generic_register_all_demuxers; #[test] fn test_avc() { let mut dmx_reg = RegisteredDemuxers::new(); @@ -1071,7 +1079,7 @@ mod test { //let file = "assets/Duck/Cell-140.vp5"; //let file = "assets/Duck/Chocolat-500.vp5"; let file = "assets/Duck/potter-500.vp7"; - test_decode_audio("avi", file, Some(1500), "avc", &dmx_reg, &dec_reg); + test_decode_audio("avi", file, Some(1500), None/*Some("avc")*/, &dmx_reg, &dec_reg); } }