aboutsummaryrefslogtreecommitdiffstats
path: root/nihav-commonfmt/src
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2020-07-09 10:42:42 +0200
committerKostya Shishkov <kostya.shishkov@gmail.com>2020-07-09 10:42:42 +0200
commit24d998947d55228ec37a08cd391983c6239e3c0c (patch)
treec7c392e66ea95f35f558de9edd5a3ff8bfaede01 /nihav-commonfmt/src
parentdcabdfd2eea01174f46548a8e2166ab88d0de96b (diff)
downloadnihav-24d998947d55228ec37a08cd391983c6239e3c0c.tar.gz
use NATimePoint for seeking
Diffstat (limited to 'nihav-commonfmt/src')
-rw-r--r--nihav-commonfmt/src/demuxers/avi.rs2
-rw-r--r--nihav-commonfmt/src/demuxers/mov.rs2
-rw-r--r--nihav-commonfmt/src/demuxers/wav.rs12
3 files changed, 11 insertions, 5 deletions
diff --git a/nihav-commonfmt/src/demuxers/avi.rs b/nihav-commonfmt/src/demuxers/avi.rs
index 43d154a..05a0d64 100644
--- a/nihav-commonfmt/src/demuxers/avi.rs
+++ b/nihav-commonfmt/src/demuxers/avi.rs
@@ -135,7 +135,7 @@ impl<'a> DemuxCore<'a> for AVIDemuxer<'a> {
}
}
- fn seek(&mut self, time: u64, seek_index: &SeekIndex) -> DemuxerResult<()> {
+ fn seek(&mut self, time: NATimePoint, seek_index: &SeekIndex) -> DemuxerResult<()> {
let ret = seek_index.find_pos(time);
if ret.is_none() {
return Err(DemuxerError::SeekError);
diff --git a/nihav-commonfmt/src/demuxers/mov.rs b/nihav-commonfmt/src/demuxers/mov.rs
index c10bb2d..47cfbe3 100644
--- a/nihav-commonfmt/src/demuxers/mov.rs
+++ b/nihav-commonfmt/src/demuxers/mov.rs
@@ -962,7 +962,7 @@ impl<'a> DemuxCore<'a> for MOVDemuxer<'a> {
Err(DemuxerError::EOF)
}
- fn seek(&mut self, time: u64, seek_index: &SeekIndex) -> DemuxerResult<()> {
+ fn seek(&mut self, time: NATimePoint, seek_index: &SeekIndex) -> DemuxerResult<()> {
let ret = seek_index.find_pos(time);
if ret.is_none() {
return Err(DemuxerError::SeekError);
diff --git a/nihav-commonfmt/src/demuxers/wav.rs b/nihav-commonfmt/src/demuxers/wav.rs
index f9c9551..a579279 100644
--- a/nihav-commonfmt/src/demuxers/wav.rs
+++ b/nihav-commonfmt/src/demuxers/wav.rs
@@ -83,10 +83,16 @@ impl<'a> DemuxCore<'a> for WAVDemuxer<'a> {
}
}
- fn seek(&mut self, time: u64, _seek_index: &SeekIndex) -> DemuxerResult<()> {
+ fn seek(&mut self, time: NATimePoint, _seek_index: &SeekIndex) -> DemuxerResult<()> {
if self.block_size != 0 && self.avg_bytes != 0 {
- let seek_dst = u64::from(self.avg_bytes) * time / 1000;
- let seek_off = seek_dst / (self.block_size as u64) * (self.block_size as u64);
+ let seek_off = match time {
+ NATimePoint::Milliseconds(ms) => {
+ let seek_dst = u64::from(self.avg_bytes) * ms / 1000;
+ seek_dst / (self.block_size as u64) * (self.block_size as u64)
+ },
+ NATimePoint::PTS(pts) => (self.block_size as u64) * pts,
+ NATimePoint::None => return Ok(()),
+ };
self.src.seek(SeekFrom::Start(self.data_pos + seek_off))?;
Ok(())
} else {