X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-game%2Fsrc%2Fdemuxers%2Fsiff.rs;h=1c961bea1e304850c9f80438b742651567b49151;hb=HEAD;hp=33c26f8e2ff9e3a42fbfe266432b1573f6431f4b;hpb=561d0f7901f186b779e6fdaf26640355319324ba;p=nihav.git diff --git a/nihav-game/src/demuxers/siff.rs b/nihav-game/src/demuxers/siff.rs index 33c26f8..1c961be 100644 --- a/nihav-game/src/demuxers/siff.rs +++ b/nihav-game/src/demuxers/siff.rs @@ -83,8 +83,7 @@ impl<'a> SIFFDemuxer<'a> { let size = self.src.read_u16le()? as usize; validate!(size > 8); let stream = strmgr.get_stream(0).unwrap(); - let (tb_num, tb_den) = stream.get_timebase(); - let ts = NATimeInfo::new(Some(self.vpts), None, None, tb_num, tb_den); + let ts = stream.make_ts(Some(self.vpts), None, None); let kframe = self.vpts == 0; self.cframe += 1; let pkt = self.src.read_packet(stream, ts, kframe, size - 2)?; @@ -164,8 +163,7 @@ impl<'a> SIFFDemuxer<'a> { let size = self.src.read_u32le()? as usize; validate!(size > 6); let stream = strmgr.get_stream(0).unwrap(); - let (tb_num, tb_den) = stream.get_timebase(); - let ts = NATimeInfo::new(Some(self.vpts), None, None, tb_num, tb_den); + let ts = stream.make_ts(Some(self.vpts), None, None); let kframe = self.vpts == 0; self.cframe += 1; let pkt = self.src.read_packet(stream, ts, kframe, size - 4)?; @@ -206,7 +204,7 @@ impl<'a> SIFFDemuxer<'a> { validate!(&tag == b"SHDR"); let hdr_size = self.src.read_u32be()? as usize; validate!(hdr_size >= 8); - let snd_size = self.src.read_u32le()?; + let duration = self.src.read_u32le()? as u64; let srate = self.src.read_u16le()? as u32; let flags = self.src.read_u16le()?; let bits = flags as u8; @@ -215,8 +213,6 @@ impl<'a> SIFFDemuxer<'a> { self.ablock = (bits as usize) * (channels as usize); self.src.read_skip(hdr_size - 8)?; - let duration = u64::from(snd_size) / u64::from(channels) * 8 / u64::from(bits); - let fmt = match bits { 8 => SND_U8_FORMAT, 16 => SND_S16_FORMAT, @@ -238,8 +234,7 @@ impl<'a> SIFFDemuxer<'a> { let cur_size = self.size.min(1024 * (self.ablock as u32)); let stream = strmgr.get_stream(0).unwrap(); - let (tb_num, tb_den) = stream.get_timebase(); - let ts = NATimeInfo::new(None, None, None, tb_num, tb_den); + let ts = stream.make_ts(None, None, None); let pkt = self.src.read_packet(stream, ts, true, cur_size as usize)?; self.size -= cur_size; @@ -282,8 +277,7 @@ impl<'a> DemuxCore<'a> for SIFFDemuxer<'a> { std::mem::swap(&mut buf, &mut self.abuf); if let Some(stream) = strmgr.get_stream(1) { - let (tb_num, tb_den) = stream.get_timebase(); - let ts = NATimeInfo::new(Some(self.apts), None, None, tb_num, tb_den); + let ts = stream.make_ts(Some(self.apts), None, None); self.apts += (buf.len() / self.ablock) as u64; return Ok(NAPacket::new(stream, ts, true, buf)); }