Fixed a bug in write_chunk

This commit is contained in:
Jamie Hardt
2020-12-29 14:38:05 -08:00
parent f63d6279c3
commit 41977adb83

View File

@@ -232,9 +232,7 @@ impl<W> WaveWriter<W> where W: Write + Seek {
retval.increment_form_length(4)?; retval.increment_form_length(4)?;
let mut chunk = retval.chunk(JUNK_SIG)?; retval.write_junk(96)?;
chunk.write(&[0u8; 96])?;
let retval = chunk.end()?;
let mut chunk = retval.chunk(FMT__SIG)?; let mut chunk = retval.chunk(FMT__SIG)?;
chunk.write_wave_fmt(&format)?; chunk.write_wave_fmt(&format)?;
@@ -250,10 +248,10 @@ impl<W> WaveWriter<W> where W: Write + Seek {
self.inner.write_u32::<LittleEndian>(data.len() as u32)?; self.inner.write_u32::<LittleEndian>(data.len() as u32)?;
self.inner.write(data)?; self.inner.write(data)?;
if data.len() % 2 == 0 { if data.len() % 2 == 0 {
self.increment_form_length(data.len() as u64)?; self.increment_form_length(8 + data.len() as u64)?;
} else { } else {
self.inner.write(&[0u8])?; self.inner.write(&[0u8])?;
self.increment_form_length(data.len() as u64 + 1)?; self.increment_form_length(8 + data.len() as u64 + 1)?;
} }
Ok(()) Ok(())
} }
@@ -281,10 +279,15 @@ impl<W> WaveWriter<W> where W: Write + Seek {
self.write_chunk(AXML_SIG, &axml) self.write_chunk(AXML_SIG, &axml)
} }
/// Write a `JUNK` filler chunk
pub fn write_junk(&mut self, length: u32) -> Result<(), Error> {
let filler = vec![0u8; length as usize];
self.write_chunk(JUNK_SIG, &filler)
}
/// Create an audio frame writer, which takes possession of the callee /// Create an audio frame writer, which takes possession of the callee
/// `WaveWriter`. /// `WaveWriter`.
/// ///
///
pub fn audio_frame_writer(mut self) -> Result<AudioFrameWriter<W>, Error> { pub fn audio_frame_writer(mut self) -> Result<AudioFrameWriter<W>, Error> {
// append elm1 chunk // append elm1 chunk