diff options
author | Kostya Shishkov <kostya.shishkov@gmail.com> | 2018-09-06 11:44:47 +0200 |
---|---|---|
committer | Kostya Shishkov <kostya.shishkov@gmail.com> | 2018-09-06 11:44:47 +0200 |
commit | 5b744f82bb80a19d86211aac8dfdda060cc93f4b (patch) | |
tree | 20d71bc2c2e3b5129a5cea8971665b2843c81ea0 /src | |
parent | c7cf8c496a68d9edd3685e25c0c902d81ed6b6d8 (diff) | |
download | nihav-5b744f82bb80a19d86211aac8dfdda060cc93f4b.tar.gz |
rmdec: handle situation when last partial frame is full frame
Diffstat (limited to 'src')
-rw-r--r-- | src/demuxers/realmedia.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/demuxers/realmedia.rs b/src/demuxers/realmedia.rs index 4415192..2702b9b 100644 --- a/src/demuxers/realmedia.rs +++ b/src/demuxers/realmedia.rs @@ -375,7 +375,11 @@ impl<'a> DemuxCore<'a> for RealMediaDemuxer<'a> { //println!(" mode 2 pkt {}/{} tail {}/{} seq {}", packet_num, num_pkts, tail_size, frame_size, seq_no); self.slice_buf.resize(tail_size as usize, 0); self.src.read_buf(self.slice_buf.as_mut_slice())?; - vstr.add_slice(packet_num as usize, self.slice_buf.as_slice()); + if packet_num == 1 && frame_size == tail_size { + vstr.start_slice(num_pkts, frame_size as usize, self.slice_buf.as_slice()); + } else { + vstr.add_slice(packet_num as usize, self.slice_buf.as_slice()); + } while self.src.tell() < pos + (payload_size as u64) { let res = read_multiple_frame(self.src, stream.clone(), false, false); |