@@ -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