]> git.nihav.org Git - nihav.git/commitdiff
mkv: timestamp difference is signed
authorKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 30 Oct 2026 20:14:27 +0000 (21:14 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 30 Oct 2026 20:14:27 +0000 (21:14 +0100)
nihav-commonfmt/src/demuxers/mkv/mod.rs

index 0a9c6e25c453db862be792dc0a77efa10dd85636..7f9c190417177bf53d5a13682fbe49254b16707a 100644 (file)
@@ -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;