X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-indeo%2Fsrc%2Fcodecs%2Findeo3.rs;h=224c3ecd62c9658c5912a3293970ac07f82083ee;hb=7d57ae2f680d7a1eba7af2ee831f305b2f0f9324;hp=6f20613035afe032be267fea462965bfc331b35b;hpb=2890938d5fde1e6d3706e1480857f455815fd4dc;p=nihav.git diff --git a/nihav-indeo/src/codecs/indeo3.rs b/nihav-indeo/src/codecs/indeo3.rs index 6f20613..224c3ec 100644 --- a/nihav-indeo/src/codecs/indeo3.rs +++ b/nihav-indeo/src/codecs/indeo3.rs @@ -732,8 +732,12 @@ impl NADecoder for Indeo3Decoder { validate!((width >= 16) && (width <= 640)); validate!((height >= 16) && (height <= 640)); validate!(((width & 3) == 0) && ((height & 3) == 0)); + let vinfo; if (self.bufs.width != (width as usize)) || (self.bufs.height != (height as usize)) { self.bufs.alloc(width as usize, height as usize); + vinfo = NAVideoInfo::new(width as usize, height as usize, false, formats::YUV410_FORMAT); + } else { + vinfo = self.info.get_properties().get_video_info().unwrap(); } self.width = width; self.height = height; @@ -759,9 +763,6 @@ impl NADecoder for Indeo3Decoder { if (uoff < vend) && (uoff > voff) { vend = uoff; } let intraframe = (flags & FLAG_KEYFRAME) != 0; - let vinfo = self.info.get_properties().get_video_info().unwrap(); - validate!((vinfo.get_width() & !3) == (self.width & !3).into()); - validate!((vinfo.get_height() & !3) == (self.height & !3).into()); let bufinfo = alloc_video_buffer(vinfo, 4)?; let mut buf = bufinfo.get_vbuf().unwrap(); let ystart = data_start + u64::from(yoff); @@ -791,6 +792,12 @@ impl NADecoder for Indeo3Decoder { } } +impl NAOptionHandler for Indeo3Decoder { + 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 { Box::new(Indeo3Decoder::new()) } @@ -799,9 +806,9 @@ 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::indeo_register_all_codecs; - use nihav_commonfmt::demuxers::generic_register_all_demuxers; + use nihav_codec_support::test::dec_video::*; + use crate::indeo_register_all_codecs; + use nihav_commonfmt::generic_register_all_demuxers; #[test] fn test_indeo3() { let mut dmx_reg = RegisteredDemuxers::new();