ggerganov commited on
Commit
d381eca
·
unverified ·
1 Parent(s): 4441744

Fix reading of stereo WAV files

Browse files
Files changed (1) hide show
  1. main.cpp +9 -7
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.totalPCMFrameCount);
2145
- drwav_read_pcm_frames_s16(&wav, wav.totalPCMFrameCount, pcm16.data());
2146
  drwav_uninit(&wav);
2147
 
2148
- // convert to float
2149
- pcmf32.resize(pcm16.size());
2150
  if (wav.channels == 1) {
2151
- for (size_t i = 0; i < pcm16.size(); i++) {
2152
  pcmf32[i] = float(pcm16[i])/32768.0f;
2153
  }
2154
  } 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
  }
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
  }