projects
/
nihav.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ape: report sample-based duration
[nihav.git]
/
nihav-llaudio
/
src
/
demuxers
/
ape.rs
diff --git
a/nihav-llaudio/src/demuxers/ape.rs
b/nihav-llaudio/src/demuxers/ape.rs
index 10ebc07a3648fd61525e725488a41e35ae297bc1..bae9416ba2ab3f8ebd082aa48cef97fc28b96795 100644
(file)
--- a/
nihav-llaudio/src/demuxers/ape.rs
+++ b/
nihav-llaudio/src/demuxers/ape.rs
@@
-15,6
+15,7
@@
struct APEDemuxer<'a> {
normal_blocks: u32,
last_blocks: u32,
truncated: bool,
normal_blocks: u32,
last_blocks: u32,
truncated: bool,
+ duration: u64,
}
impl<'a> APEDemuxer<'a> {
}
impl<'a> APEDemuxer<'a> {
@@
-26,6
+27,7
@@
impl<'a> APEDemuxer<'a> {
normal_blocks: 0,
last_blocks: 0,
truncated: false,
normal_blocks: 0,
last_blocks: 0,
truncated: false,
+ duration: 0,
}
}
}
}
}
}
@@
-119,6
+121,7
@@
impl<'a> DemuxCore<'a> for APEDemuxer<'a> {
self.frames = Vec::with_capacity(nframes);
self.normal_blocks = blocksperframe;
self.last_blocks = finalblocks;
self.frames = Vec::with_capacity(nframes);
self.normal_blocks = blocksperframe;
self.last_blocks = finalblocks;
+ self.duration = (((nframes - 1) as u64) * u64::from(blocksperframe) + u64::from(finalblocks)) * 1000 / u64::from(srate);
seek_index.mode = SeekIndexMode::Present;
let first_off = src.peek_u32le()?;
seek_index.mode = SeekIndexMode::Present;
let first_off = src.peek_u32le()?;
@@
-223,7
+226,7
@@
impl<'a> DemuxCore<'a> for APEDemuxer<'a> {
Ok(())
}
Ok(())
}
- fn get_duration(&self) -> u64 {
0
}
+ fn get_duration(&self) -> u64 {
self.duration
}
}
impl<'a> NAOptionHandler for APEDemuxer<'a> {
}
impl<'a> NAOptionHandler for APEDemuxer<'a> {