mark traits as dyn
[nihav.git] / nihav-game / src / demuxers / bmv.rs
index 7553a94865b96b60479e744711c278a41f9919b2..6ef023ba58946bdabfc7066df9ce4eda67cf885f 100644 (file)
@@ -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<DemuxCore<'a> + 'a> {
+    fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box<dyn DemuxCore<'a> + '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<u8> = 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<DemuxCore<'a> + 'a> {
+    fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box<dyn DemuxCore<'a> + 'a> {
         Box::new(BMV3Demuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "bmv3" }