]> git.nihav.org Git - nihav.git/commitdiff
binkdemux: fix arbitrary seeking with large timebase denominator
authorKostya Shishkov <kostya.shiskov@gmail.com>
Tue, 7 Oct 2025 04:39:33 +0000 (06:39 +0200)
committerKostya Shishkov <kostya.shiskov@gmail.com>
Tue, 7 Oct 2025 04:39:33 +0000 (06:39 +0200)
nihav-rad/src/demuxers/bink.rs

index fd9ef33ea8473fcd2065a35c69bf25f75caff5ec..834b5ea4d623ea85dd05bebf26107cca4138c256 100644 (file)
@@ -163,7 +163,7 @@ impl<'a> DemuxCore<'a> for BinkDemuxer<'a> {
             return Err(DemuxerError::SeekError);
         }
         if let Some(seek_info) = seek_idx.find_pos(time) {
-            if !self.force_seek || seek_info.pts.abs_diff(seek_ts) <= u64::from(self.tb_den * 2) {
+            if !self.force_seek || seek_info.pts.abs_diff(seek_ts) <= u64::from(self.tb_den * 2 / self.tb_num.max(1)) {
                 self.src.seek(SeekFrom::Start(seek_info.pos))?;
                 self.queued_packets.clear();
                 self.cur_frame = seek_info.pts as usize;