X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-llaudio%2Fsrc%2Fdemuxers%2Fwavpack.rs;h=9cd50fa76e807ee6fb2db59312c518f670cd30b5;hp=9cfbba8b8ea10af2e809f2db9fb4285fd8a6b1e6;hb=a480a0de101483d802a11e72d758dae00fa4860a;hpb=87927c5732b39bb23209486bed8d7bb7fc56b92e diff --git a/nihav-llaudio/src/demuxers/wavpack.rs b/nihav-llaudio/src/demuxers/wavpack.rs index 9cfbba8..9cd50fa 100644 --- a/nihav-llaudio/src/demuxers/wavpack.rs +++ b/nihav-llaudio/src/demuxers/wavpack.rs @@ -174,7 +174,7 @@ impl<'a> DemuxCore<'a> for WavPackDemuxer<'a> { let ahdr = NAAudioInfo::new(srate, channels, SND_S16P_FORMAT, 1); let ainfo = NACodecInfo::new("wavpack", NACodecTypeInfo::Audio(ahdr), Some(buf.clone())); - strmgr.add_stream(NAStream::new(StreamType::Audio, 0, ainfo, 1, srate)).unwrap(); + strmgr.add_stream(NAStream::new(StreamType::Audio, 0, ainfo, 1, srate, hdr.tot_samples)).unwrap(); seek_index.mode = SeekIndexMode::Automatic; self.srate = srate; self.known_frames = Vec::with_capacity(((self.nsamples + u64::from(srate) - 1) / u64::from(srate)) as usize); @@ -230,6 +230,8 @@ impl<'a> DemuxCore<'a> for WavPackDemuxer<'a> { } } else { let mut hdrbuf = [0u8; WV_HEADER_SIZE]; + let lastoff = self.known_frames.last().unwrap_or(&FrameSeekInfo::default()).off; + self.src.seek(SeekFrom::Start(lastoff))?; loop { self.src.peek_buf(&mut hdrbuf)?; let hdr = WVHeader::parse(&hdrbuf)?; @@ -251,6 +253,7 @@ impl<'a> DemuxCore<'a> for WavPackDemuxer<'a> { Err(DemuxerError::NotPossible) } } + fn get_duration(&self) -> u64 { 0 } } impl<'a> NAOptionHandler for WavPackDemuxer<'a> {