Spaces:
Running
Running
Fix reading of stereo WAV files
Browse files
main.cpp
CHANGED
|
@@ -2140,20 +2140,22 @@ int main(int argc, char ** argv) {
|
|
| 2140 |
return 5;
|
| 2141 |
}
|
| 2142 |
|
|
|
|
|
|
|
| 2143 |
std::vector<int16_t> pcm16;
|
| 2144 |
-
pcm16.resize(wav.
|
| 2145 |
-
drwav_read_pcm_frames_s16(&wav,
|
| 2146 |
drwav_uninit(&wav);
|
| 2147 |
|
| 2148 |
-
// convert to float
|
| 2149 |
-
pcmf32.resize(
|
| 2150 |
if (wav.channels == 1) {
|
| 2151 |
-
for (size_t i = 0; i <
|
| 2152 |
pcmf32[i] = float(pcm16[i])/32768.0f;
|
| 2153 |
}
|
| 2154 |
} else {
|
| 2155 |
-
for (size_t i = 0; i <
|
| 2156 |
-
pcmf32[i] = float(pcm16[i
|
| 2157 |
}
|
| 2158 |
}
|
| 2159 |
}
|
|
|
|
| 2140 |
return 5;
|
| 2141 |
}
|
| 2142 |
|
| 2143 |
+
int n = wav.totalPCMFrameCount;
|
| 2144 |
+
|
| 2145 |
std::vector<int16_t> pcm16;
|
| 2146 |
+
pcm16.resize(n*wav.channels);
|
| 2147 |
+
drwav_read_pcm_frames_s16(&wav, n, pcm16.data());
|
| 2148 |
drwav_uninit(&wav);
|
| 2149 |
|
| 2150 |
+
// convert to mono, float
|
| 2151 |
+
pcmf32.resize(n);
|
| 2152 |
if (wav.channels == 1) {
|
| 2153 |
+
for (size_t i = 0; i < n; i++) {
|
| 2154 |
pcmf32[i] = float(pcm16[i])/32768.0f;
|
| 2155 |
}
|
| 2156 |
} else {
|
| 2157 |
+
for (size_t i = 0; i < n; i++) {
|
| 2158 |
+
pcmf32[i] = float(pcm16[2*i] + pcm16[2*i + 1])/65536.0f;
|
| 2159 |
}
|
| 2160 |
}
|
| 2161 |
}
|