aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2020-03-06 19:14:40 +0100
committerKostya Shishkov <kostya.shishkov@gmail.com>2020-03-06 19:14:40 +0100
commitbcaa61dbe363c0fef533285d02789c2b4994425e (patch)
tree9d1b031db8264e06aea541db5b611b6a9724ebd5
parent7d08c359b21e4d4628e2edf1471d51265958c307 (diff)
downloadnihav-tool-bcaa61dbe363c0fef533285d02789c2b4994425e.tar.gz
update WAV writer for interleaved audio support
-rw-r--r--src/wavwriter.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/wavwriter.rs b/src/wavwriter.rs
index d72b82a..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<usize> = 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)?;
}
}