realmedia: hopefully fix reported block size
[nihav.git] / nihav-realmedia / src / demuxers / realmedia.rs
index 14183c9cc4ac54fca43069cf4b3a10d7c9b5cbed..6335c6d9b426730ef7c84d6e20621ad3b5c0faad 100644 (file)
@@ -510,7 +510,11 @@ println!("unknown MLTI substream {:08X} / {:08X}", tag, tag2);
         };
         let cname = find_codec_name(RM_AUDIO_CODEC_REGISTER, ainfo.fcc);
         let blk_size = if ainfo.fcc != mktag!(b"sipr") {
-                ainfo.granularity as usize
+                if let Some(ref iinfo) = ainfo.ileave_info {
+                    iinfo.block_size as usize
+                } else {
+                    ainfo.granularity as usize
+                }
             } else {
                 validate!(ainfo.flavor <= 3);
                 RM_SIPRO_BLOCK_SIZES[ainfo.flavor as usize]
@@ -1247,7 +1251,8 @@ impl<'a> DemuxCore<'a> for RealAudioDemuxer<'a> {
 
     fn get_frame(&mut self, strmgr: &mut StreamManager) -> DemuxerResult<NAPacket> {
         if !self.queued_pkts.is_empty() {
-            let pkt = self.queued_pkts.pop().unwrap();
+            let mut pkt = self.queued_pkts.pop().unwrap();
+            pkt.ts.pts = None;
             return Ok(pkt);
         }
         if (self.data_end != 0) && (self.src.tell() >= self.data_end) {
@@ -1257,10 +1262,13 @@ impl<'a> DemuxCore<'a> for RealAudioDemuxer<'a> {
         let stream = streamres.unwrap();
         if let Some(ref mut astr) = self.stream {
             loop {
-                let ret = astr.read_apackets(&mut self.queued_pkts, self.src, stream.clone(), 0, false, self.blk_size);
+                let mut ret = astr.read_apackets(&mut self.queued_pkts, self.src, stream.clone(), 0, false, self.blk_size);
                 if let Err(DemuxerError::TryAgain) = ret {
                     continue;
                 }
+                if let Ok(ref mut pkt) = ret {
+                    pkt.ts.pts = None;
+                }
                 return ret;
             }
         }