Skip to content

Commit 6d654d1

Browse files
committed
Fix reading of stereo WAV files
1 parent 62897e8 commit 6d654d1

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

main.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2140,20 +2140,22 @@ int main(int argc, char ** argv) {
21402140
return 5;
21412141
}
21422142

2143+
int n = wav.totalPCMFrameCount;
2144+
21432145
std::vector<int16_t> pcm16;
2144-
pcm16.resize(wav.totalPCMFrameCount);
2145-
drwav_read_pcm_frames_s16(&wav, wav.totalPCMFrameCount, pcm16.data());
2146+
pcm16.resize(n*wav.channels);
2147+
drwav_read_pcm_frames_s16(&wav, n, pcm16.data());
21462148
drwav_uninit(&wav);
21472149

2148-
// convert to float
2149-
pcmf32.resize(pcm16.size());
2150+
// convert to mono, float
2151+
pcmf32.resize(n);
21502152
if (wav.channels == 1) {
2151-
for (size_t i = 0; i < pcm16.size(); i++) {
2153+
for (size_t i = 0; i < n; i++) {
21522154
pcmf32[i] = float(pcm16[i])/32768.0f;
21532155
}
21542156
} else {
2155-
for (size_t i = 0; i < pcm16.size(); i++) {
2156-
pcmf32[i] = float(pcm16[i*2 + 0] + pcm16[i*2 + 1])/32768.0f/2.0f;
2157+
for (size_t i = 0; i < n; i++) {
2158+
pcmf32[i] = float(pcm16[2*i] + pcm16[2*i + 1])/65536.0f;
21572159
}
21582160
}
21592161
}

0 commit comments

Comments
 (0)