aac: clear M/S flags
[nihav.git] / nihav-game / src / demuxers / vmd.rs
index 3c6e1526cc365bdac8d19ca27969be44149b0d1e..3341fd1de50a7076500ec6b25801f26c9e0c4e05 100644 (file)
@@ -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;
         }
@@ -172,17 +172,18 @@ impl<'a> DemuxCore<'a> for VMDDemuxer<'a> {
         self.fno += 1;
 
         let str_id = if is_video { self.vid_id } else { self.aud_id };
-        let str = strmgr.get_stream(str_id).unwrap();
-        let (tb_num, tb_den) = str.get_timebase();
-        let ts = NATimeInfo::new(Some(u64::from(cur_frame.ts)), None, None, tb_num, tb_den);
-        let pkt = NAPacket::new(str, ts, false, buf);
+        let stream = strmgr.get_stream(str_id).unwrap();
+        let ts = stream.make_ts(Some(u64::from(cur_frame.ts)), None, None);
+        let pkt = NAPacket::new(stream, ts, false, buf);
 
         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> {
@@ -221,6 +222,7 @@ mod test {
 
     #[test]
     fn test_vmd_demux() {
+        // sample: https://samples.mplayerhq.hu/game-formats/sierra-vmd/Lighthouse/128.vmd
         let mut file = File::open("assets/Game/128.vmd").unwrap();
         //let mut file = File::open("assets/Game/1491.VMD").unwrap();
         let mut fr = FileReader::new_read(&mut file);