Skip to content

Commit 52a4b30

Browse files
committed
Fix issues with WavStream looping (Flac, Wav & MP3)
1 parent 1157475 commit 52a4b30

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/audiosource/wav/soloud_wavstream.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ namespace SoLoud
258258
{
259259
for (k = 0; k < mChannels; k++)
260260
{
261-
aBuffer[k * aSamplesToRead + i + j] = tmp[j * mCodec.mFlac->channels + k];
261+
aBuffer[k * aBufferSize + i + j] = tmp[j * mCodec.mFlac->channels + k];
262262
}
263263
}
264264
}
@@ -279,7 +279,7 @@ namespace SoLoud
279279
{
280280
for (k = 0; k < mChannels; k++)
281281
{
282-
aBuffer[k * aSamplesToRead + i + j] = tmp[j * mCodec.mMp3->channels + k];
282+
aBuffer[k * aBufferSize + i + j] = tmp[j * mCodec.mMp3->channels + k];
283283
}
284284
}
285285
}
@@ -327,7 +327,7 @@ namespace SoLoud
327327
{
328328
for (k = 0; k < mChannels; k++)
329329
{
330-
aBuffer[k * aSamplesToRead + i + j] = tmp[j * mCodec.mWav->channels + k];
330+
aBuffer[k * aBufferSize + i + j] = tmp[j * mCodec.mWav->channels + k];
331331
}
332332
}
333333
}
@@ -341,7 +341,7 @@ namespace SoLoud
341341

342342
result WavStreamInstance::seek(double aSeconds, float* mScratch, unsigned int mScratchSize)
343343
{
344-
if (mCodec.mOgg)
344+
if (mParent->mFiletype == WAVSTREAM_OGG && mCodec.mOgg)
345345
{
346346
int pos = (int)floor(mBaseSamplerate * aSeconds);
347347
stb_vorbis_seek(mCodec.mOgg, pos);
@@ -394,7 +394,7 @@ namespace SoLoud
394394

395395
bool WavStreamInstance::hasEnded()
396396
{
397-
if (mOffset >= mParent->mSampleCount)
397+
if (!(mFlags & AudioSourceInstance::LOOPING) && mOffset >= mParent->mSampleCount)
398398
{
399399
return 1;
400400
}

0 commit comments

Comments
 (0)