X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fwavwriter.rs;h=fbf825d88e79046a4f0dd01349472fb2175b92d0;hb=e9c93f5f087a52d9f5c14c5f3bb821038f1b211d;hp=51700f7b7502badfd852c7216f35fec9cba3b79c;hpb=98b31ef77be7fdff7d8b209358b37626a5cb7be7;p=nihav-tool.git diff --git a/src/wavwriter.rs b/src/wavwriter.rs index 51700f7..fbf825d 100644 --- a/src/wavwriter.rs +++ b/src/wavwriter.rs @@ -37,11 +37,19 @@ macro_rules! write_data { let nch = ainfo.get_channels() as usize; let mut offs: Vec = Vec::with_capacity(nch); for ch in 0..nch { offs.push($buf.get_offset(ch)); } + let is_planar = $buf.get_step() == 1; let data = $buf.get_data(); - for i in 0..len { - for ch in 0..nch { - let sample = data[offs[ch] + i]; + if is_planar { + for i in 0..len { + for ch in 0..nch { + let sample = data[offs[ch] + i]; + $write($wr, sample)?; + } + } + } else { + for i in 0..len*nch { + let sample = data[i]; $write($wr, sample)?; } } @@ -49,7 +57,7 @@ macro_rules! write_data { } impl<'a> WavWriter<'a> { - pub fn new(name: &String) -> Self { + pub fn new(name: &str) -> Self { let file = File::create(name).unwrap(); let fw = Box::new(FileWriter::new_write(file)); let io = ByteWriter::new(Box::leak(fw));