From: Kostya Shishkov Date: Fri, 30 Oct 2026 20:14:27 +0000 (+0100) Subject: mkv: timestamp difference is signed X-Git-Url: https://git.nihav.org/?a=commitdiff_plain;h=c65917308ea4cfbc8c545a01af04fc9e9fe0e700;p=nihav.git mkv: timestamp difference is signed --- diff --git a/nihav-commonfmt/src/demuxers/mkv/mod.rs b/nihav-commonfmt/src/demuxers/mkv/mod.rs index 0a9c6e2..7f9c190 100644 --- a/nihav-commonfmt/src/demuxers/mkv/mod.rs +++ b/nihav-commonfmt/src/demuxers/mkv/mod.rs @@ -203,7 +203,10 @@ impl<'a> DemuxCore<'a> for MatroskaDemuxer<'a> { let trk_id = self.src.read_vint()?; let timestamp = self.src.read_u16be()?; let flags = self.src.read_byte()?; - let full_ts = self.clu_ts.unwrap() + u64::from(timestamp); + let mut full_ts = self.clu_ts.unwrap() + u64::from(timestamp); + if (timestamp & 0x8000) != 0 { + full_ts = full_ts.wrapping_sub(0x10000); + } let keyframe = (flags & 0x80) != 0; let invisible = (flags & 0x08) != 0;