X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-game%2Fsrc%2Fdemuxers%2Fbmv.rs;h=6ef023ba58946bdabfc7066df9ce4eda67cf885f;hb=c2a4fa57b414ec496948a1812344a60bd72e1845;hp=7553a94865b96b60479e744711c278a41f9919b2;hpb=ecda1cc1266117b3bb8669b06185d2e15a265ebe;p=nihav.git diff --git a/nihav-game/src/demuxers/bmv.rs b/nihav-game/src/demuxers/bmv.rs index 7553a94..6ef023b 100644 --- a/nihav-game/src/demuxers/bmv.rs +++ b/nihav-game/src/demuxers/bmv.rs @@ -93,7 +93,7 @@ impl<'a> BMVDemuxer<'a> { pub struct BMVDemuxerCreator { } impl DemuxerCreator for BMVDemuxerCreator { - fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box + 'a> { Box::new(BMVDemuxer::new(br)) } fn get_name(&self) -> &'static str { "bmv" } @@ -193,6 +193,13 @@ impl<'a> DemuxCore<'a> for BMV3Demuxer<'a> { } else { asize = 0; } + if size == asize { + if self.pkt_buf.len() > 0 { + return Ok(self.pkt_buf.pop().unwrap()); + } else { + continue; + } + } let mut buf: Vec = Vec::with_capacity(size - asize + 1); buf.resize(size - asize + 1, 0); buf[0] = ctype; @@ -232,7 +239,7 @@ impl<'a> BMV3Demuxer<'a> { pub struct BMV3DemuxerCreator { } impl DemuxerCreator for BMV3DemuxerCreator { - fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box + 'a> { Box::new(BMV3Demuxer::new(br)) } fn get_name(&self) -> &'static str { "bmv3" }