]> git.nihav.org Git - nihav.git/blobdiff - nihav-commonfmt/src/muxers/wav.rs
avimux: do not record palette change chunks in OpenDML index
[nihav.git] / nihav-commonfmt / src / muxers / wav.rs
index 49be5d6036c96ad84fc11478265d791035f79892..981a2f6db75bdb52c2101e9f2b02b965b7d87112 100644 (file)
@@ -62,7 +62,11 @@ impl<'a> MuxCore<'a> for WAVMuxer<'a> {
         self.bw.write_u16le(u16::from(ainfo.channels))?;
         self.bw.write_u32le(ainfo.sample_rate)?;
         self.bw.write_u32le(avg_bytes_per_sec)?;
-        self.bw.write_u16le(ainfo.block_len as u16)?;
+        if stream.get_info().get_name() != "pcm" || ainfo.block_len > 0 {
+            self.bw.write_u16le(ainfo.block_len as u16)?;
+        } else {
+            self.bw.write_u16le(u16::from(ainfo.channels) * u16::from(ainfo.format.bits) >> 3)?;
+        }
         self.bw.write_u16le(u16::from(ainfo.format.bits))?;
         if let Some(ref buf) = stream.get_info().get_extradata() {
             self.bw.write_u16le(edata_len as u16)?;
@@ -90,8 +94,8 @@ impl<'a> MuxCore<'a> for WAVMuxer<'a> {
         Ok(())
     }
     fn end(&mut self) -> MuxerResult<()> {
-        patch_size(&mut self.bw, self.data_pos)?;
-        patch_size(&mut self.bw, 8)?;
+        patch_size(self.bw, self.data_pos)?;
+        patch_size(self.bw, 8)?;
         // todo patch avg_bytes_per_second if calculated
         // todo write fact value if calculated
         Ok(())
@@ -112,6 +116,7 @@ impl MuxerCreator for WAVMuxerCreator {
     }
     fn get_name(&self) -> &'static str { "wav" }
     fn get_capabilities(&self) -> MuxerCapabilities { MuxerCapabilities::SingleAudio("any") }
+    fn get_quirks(&self) -> MuxerQuirks { MuxerQuirks::new() }
 }
 
 #[cfg(test)]