From 61a611e33c5bc6960173683fa4ddfa80ed10d313 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Tue, 24 Mar 2020 08:32:19 +0100 Subject: [PATCH] get stride from channel count per default --- pcm.hh | 4 ++-- wav.hh | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pcm.hh b/pcm.hh index 24f2f4f..e5c492f 100644 --- a/pcm.hh +++ b/pcm.hh @@ -11,7 +11,7 @@ namespace DSP { template struct WritePCM { - virtual void write(TYPE *, int, int = 1) = 0; + virtual void write(TYPE *, int, int = -1) = 0; virtual bool good() = 0; virtual void silence(int) = 0; virtual int rate() = 0; @@ -22,7 +22,7 @@ struct WritePCM template struct ReadPCM { - virtual void read(TYPE *, int, int = 1) = 0; + virtual void read(TYPE *, int, int = -1) = 0; virtual bool good() = 0; virtual void skip(int) = 0; virtual int rate() = 0; diff --git a/wav.hh b/wav.hh index 28bd82f..60bd6ee 100644 --- a/wav.hh +++ b/wav.hh @@ -99,8 +99,10 @@ public: return; } } - void read(TYPE *buf, int num, int stride = 1) + void read(TYPE *buf, int num, int stride = -1) { + if (stride < 0) + stride = channels_; for (int n = 0; n < num; ++n) { for (int c = 0; c < channels_; ++c) { buf[stride * n + c] = TYPE(readLE(bytes) - offset) / TYPE(factor); @@ -204,8 +206,10 @@ public: os.seekp(40); writeLE(size, 4); // Subchunk2Size } - void write(TYPE *buf, int num, int stride = 1) + void write(TYPE *buf, int num, int stride = -1) { + if (stride < 0) + stride = channels_; for (int n = 0; n < num; ++n) { for (int c = 0; c < channels_; ++c) { TYPE v = TYPE(offset) + TYPE(factor) * buf[stride * n + c];