summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Shishkov <[email protected]>2019-12-14 10:54:21 +0100
committerKostya Shishkov <[email protected]>2019-12-14 10:54:21 +0100
commitb6e93e1b689c9ff0397553550c08161dd5528fcc (patch)
tree59dec181e01a27fbdd98cbf9ff2bab068f146fe8
parent96eff47e92036a7453c5eb08a1d01baceffb98e4 (diff)
indeo3: support mid-stream frame size change
-rw-r--r--nihav-indeo/src/codecs/indeo3.rs7
1 files 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);