aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2018-09-06 11:44:47 +0200
committerKostya Shishkov <kostya.shishkov@gmail.com>2018-09-06 11:44:47 +0200
commit5b744f82bb80a19d86211aac8dfdda060cc93f4b (patch)
tree20d71bc2c2e3b5129a5cea8971665b2843c81ea0 /src
parentc7cf8c496a68d9edd3685e25c0c902d81ed6b6d8 (diff)
downloadnihav-5b744f82bb80a19d86211aac8dfdda060cc93f4b.tar.gz
rmdec: handle situation when last partial frame is full frame
Diffstat (limited to 'src')
-rw-r--r--src/demuxers/realmedia.rs6
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);