get stride from channel count per default

This commit is contained in:
Ahmet Inan 2020-03-24 08:32:19 +01:00
commit 61a611e33c
2 changed files with 8 additions and 4 deletions

4
pcm.hh
View file

@ -11,7 +11,7 @@ namespace DSP {
template <typename TYPE>
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 <typename TYPE>
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;

8
wav.hh
View file

@ -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];