X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-game%2Fsrc%2Fdemuxers%2Fvmd.rs;h=a2c93f6d5dc6496dda7f92d0ddadc37ff4084c1e;hp=70bf0fe15a69aa6400c54e75f60127b44239b1f9;hb=a480a0de101483d802a11e72d758dae00fa4860a;hpb=92355de18dca594063e239a3cd7de403c64bcac2 diff --git a/nihav-game/src/demuxers/vmd.rs b/nihav-game/src/demuxers/vmd.rs index 70bf0fe..a2c93f6 100644 --- a/nihav-game/src/demuxers/vmd.rs +++ b/nihav-game/src/demuxers/vmd.rs @@ -61,7 +61,7 @@ impl<'a> DemuxCore<'a> for VMDDemuxer<'a> { let vhdr = NAVideoInfo::new(width, height, false, PAL8_FORMAT); let vci = NACodecTypeInfo::Video(vhdr); let vinfo = NACodecInfo::new(if !self.is_indeo { "vmd-video" } else { "indeo3" }, vci, Some(edata)); - self.vid_id = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, 12)).unwrap(); + self.vid_id = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, 12, nframes as u64)).unwrap(); let is_ext_audio = (hdr_size & 0xF) == 4; let ext_audio_id = if is_ext_audio { @@ -100,7 +100,7 @@ impl<'a> DemuxCore<'a> for VMDDemuxer<'a> { } }; let ainfo = NACodecInfo::new(ac_name, NACodecTypeInfo::Audio(ahdr), Some(aedata)); - self.aud_id = strmgr.add_stream(NAStream::new(StreamType::Audio, 1, ainfo, 1, srate)).unwrap(); + self.aud_id = strmgr.add_stream(NAStream::new(StreamType::Audio, 1, ainfo, 1, srate, 0)).unwrap(); } else { block_size = 0; } @@ -160,7 +160,7 @@ impl<'a> DemuxCore<'a> for VMDDemuxer<'a> { let is_video = cur_frame.chtype == CHTYPE_VIDEO; let mut buf: Vec = Vec::with_capacity(FRAME_HDR_SIZE + (cur_frame.size as usize)); - if !(is_video && self.is_indeo) && !(!is_video && self.is_lhaud) { + if !((is_video && self.is_indeo) || (!is_video && self.is_lhaud)) { buf.extend_from_slice(&cur_frame.hdr); buf.resize(FRAME_HDR_SIZE + (cur_frame.size as usize), 0); self.src.read_buf(&mut buf[FRAME_HDR_SIZE..])?; @@ -180,9 +180,17 @@ impl<'a> DemuxCore<'a> for VMDDemuxer<'a> { Ok(pkt) } - fn seek(&mut self, _time: u64, _seek_index: &SeekIndex) -> DemuxerResult<()> { + fn seek(&mut self, _time: NATimePoint, _seek_index: &SeekIndex) -> DemuxerResult<()> { Err(DemuxerError::NotPossible) } + + fn get_duration(&self) -> u64 { 0 } +} + +impl<'a> NAOptionHandler for VMDDemuxer<'a> { + fn get_supported_options(&self) -> &[NAOptionDefinition] { &[] } + fn set_options(&mut self, _options: &[NAOption]) { } + fn query_option_value(&self, _name: &str) -> Option { None } } impl<'a> VMDDemuxer<'a> {