wav: try to read as much PCM data as possible
[nihav.git] / nihav-commonfmt / src / demuxers / wav.rs
index 90196177322731c8ae9986d8e5f3987c3ac61b09..193623eea2f3c72359fd236ddf215fac329dcbcc 100644 (file)
@@ -103,8 +103,14 @@ impl<'a> DemuxCore<'a> for WAVDemuxer<'a> {
                     bsize
                 };
             let mut buf = vec![0; bsize];
-            let size                    = self.src.read_buf_some(buf.as_mut_slice())?;
-            buf.truncate(size);
+            let mut tot_size = 0;
+            while let Ok(psize)         = self.src.read_buf_some(&mut buf[tot_size..]) {
+                tot_size += psize;
+                if tot_size == buf.len() {
+                    break;
+                }
+            }
+            buf.truncate(tot_size);
             Ok(NAPacket::new(stream, ts, true, buf))
         } else {
             self.src.read_packet(stream, ts, true, self.block_size)