From b6e93e1b689c9ff0397553550c08161dd5528fcc Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Sat, 14 Dec 2019 10:54:21 +0100 Subject: [PATCH] indeo3: support mid-stream frame size change --- nihav-indeo/src/codecs/indeo3.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/nihav-indeo/src/codecs/indeo3.rs b/nihav-indeo/src/codecs/indeo3.rs index 6f20613..fe9333b 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); -- 2.30.2