X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-game%2Fsrc%2Fdemuxers%2Fimax.rs;h=999ea1ae9d49292c7385775ce0a3d5793b97c9e7;hb=a970b2110488aeff5855743d1728ee83462e8306;hp=ad427dd52859174dc33a611d13aad9dc68daf907;hpb=3813fe8a3408aa3b6dcb296ca7203c89f2a6894d;p=nihav.git diff --git a/nihav-game/src/demuxers/imax.rs b/nihav-game/src/demuxers/imax.rs index ad427dd..999ea1a 100644 --- a/nihav-game/src/demuxers/imax.rs +++ b/nihav-game/src/demuxers/imax.rs @@ -48,11 +48,10 @@ impl<'a> DemuxCore<'a> for IMAXDemuxer<'a> { match ftype { 0xAA97 => { - let str = strmgr.get_stream(self.v_id).unwrap(); - let (tb_num, tb_den) = str.get_timebase(); - let ts = NATimeInfo::new(Some(self.cur_frame), None, None, tb_num, tb_den); + let stream = strmgr.get_stream(self.v_id).unwrap(); + let ts = stream.make_ts(Some(self.cur_frame), None, None); self.cur_frame += 1; - let mut pkt = self.src.read_packet(str, ts, true, fsize)?; + let mut pkt = self.src.read_packet(stream, ts, true, fsize)?; pkt.add_side_data(NASideData::Palette(self.pal_change, self.pal.clone())); self.pal_change = false; return Ok(pkt); @@ -72,11 +71,10 @@ impl<'a> DemuxCore<'a> for IMAXDemuxer<'a> { self.pal_change = true; }, 0xAA99 => { - let str = strmgr.get_stream(self.a_id).unwrap(); - let (tb_num, tb_den) = str.get_timebase(); - let ts = NATimeInfo::new(Some(self.apos), None, None, tb_num, tb_den); + let stream = strmgr.get_stream(self.a_id).unwrap(); + let ts = stream.make_ts(Some(self.apos), None, None); self.apos += fsize as u64; - return self.src.read_packet(str, ts, true, fsize); + return self.src.read_packet(stream, ts, true, fsize); }, 0xAAFF => return Err(DemuxerError::EOF), _ => return Err(DemuxerError::InvalidData), @@ -124,6 +122,7 @@ mod test { #[test] fn test_imax_demux() { + // sample from Fable game let mut file = File::open("assets/Game/present.imx").unwrap(); let mut fr = FileReader::new_read(&mut file); let mut br = ByteReader::new(&mut fr);