aac: clear M/S flags
[nihav.git] / nihav-game / src / demuxers / siff.rs
index 33c26f8e2ff9e3a42fbfe266432b1573f6431f4b..1c961bea1e304850c9f80438b742651567b49151 100644 (file)
@@ -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));
             }