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)?;
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(())
}
fn get_name(&self) -> &'static str { "wav" }
fn get_capabilities(&self) -> MuxerCapabilities { MuxerCapabilities::SingleAudio("any") }
+ fn get_quirks(&self) -> MuxerQuirks { MuxerQuirks::new() }
}
#[cfg(test)]