aac: clear M/S flags
[nihav.git] / nihav-game / src / demuxers / vx.rs
index cfc44e0bb8baf646efc982133e6480f70a3bf323..1817682c35c1e4b768dac9d982f8ba422f86683a 100644 (file)
@@ -19,6 +19,7 @@ struct VXDemuxer<'a> {
 
 impl<'a> DemuxCore<'a> for VXDemuxer<'a> {
     #[allow(unused_variables)]
+    #[allow(clippy::cast_lossless)]
     fn open(&mut self, strmgr: &mut StreamManager, _seek_index: &mut SeekIndex) -> DemuxerResult<()> {
         let src = &mut self.src;
 
@@ -47,7 +48,7 @@ impl<'a> DemuxCore<'a> for VXDemuxer<'a> {
         let vci = NACodecTypeInfo::Video(vhdr);
         let edata = [fps as u8].to_vec();
         let vinfo = NACodecInfo::new("vxvideo", vci, Some(edata));
-        self.vid_id = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, fps)).unwrap();
+        self.vid_id = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, fps, nframes as u64)).unwrap();
 
         if num_audio_tracks != 0 {
             validate!(audio_off + ((num_audio_tracks * AUDIO_EXTRADATA_LEN) as u64) == vinfo_off);
@@ -56,7 +57,7 @@ impl<'a> DemuxCore<'a> for VXDemuxer<'a> {
                                           src.read_buf(edata.as_mut_slice())?;
             let ahdr = NAAudioInfo::new(srate, 1, SND_S16P_FORMAT, 1);
             let ainfo = NACodecInfo::new("vxaudio", NACodecTypeInfo::Audio(ahdr), Some(edata));
-            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();
             self.num_afrm = nframes as u64;
             self.ano = 0;
             self.num_aud = num_audio_tracks;
@@ -83,8 +84,7 @@ impl<'a> DemuxCore<'a> for VXDemuxer<'a> {
         let stream = strmgr.get_stream(self.vid_id);
         if stream.is_none() { return Err(DemuxerError::InvalidData); }
         let stream = stream.unwrap();
-        let (tn, td) = stream.get_timebase();
-        let ts = NATimeInfo::new(Some(self.vno), None, None, tn, td);
+        let ts = stream.make_ts(Some(self.vno), None, None);
         let size                    = self.src.read_u16le()? as usize;
         validate!(size > 2);
         let _num_achunks            = self.src.read_u16le()?;
@@ -98,6 +98,8 @@ impl<'a> DemuxCore<'a> for VXDemuxer<'a> {
     fn seek(&mut self, _time: NATimePoint, _seek_index: &SeekIndex) -> DemuxerResult<()> {
         Err(DemuxerError::NotPossible)
     }
+
+    fn get_duration(&self) -> u64 { 0 }
 }
 
 impl<'a> NAOptionHandler for VXDemuxer<'a> {
@@ -139,6 +141,7 @@ mod test {
 
     #[test]
     fn test_vx_demux() {
+        // sample from some game
         let mut file = File::open("assets/Game/bioware.vx").unwrap();
         //let mut file = File::open("assets/Game/BS_01_Intro.vx").unwrap();
         //let mut file = File::open("assets/Game/sega.vx").unwrap();