Skip to content

Commit cb94719

Browse files
committed
correct 16-bit samples not signed extended on read/peek
1 parent 36fd799 commit cb94719

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

libraries/I2S/src/I2S.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,11 @@ int I2SClass::read()
194194

195195
read(&sample, _bitsPerSample / 8);
196196

197+
if (_bitsPerSample == 16 && (sample & 0x8000)) {
198+
// sign extend value
199+
sample |= 0xffff0000;
200+
}
201+
197202
return sample;
198203
}
199204

@@ -212,6 +217,11 @@ int I2SClass::peek()
212217
__enable_irq();
213218
}
214219

220+
if (_bitsPerSample == 16 && (sample & 0x8000)) {
221+
// sign extend value
222+
sample |= 0xffff0000;
223+
}
224+
215225
return sample;
216226
}
217227

0 commit comments

Comments
 (0)