|
@@ -1667,16 +1667,16 @@ void StopMusicStream(Music music)
|
|
|
switch (music.ctxType)
|
|
|
{
|
|
|
#if defined(SUPPORT_FILEFORMAT_WAV)
|
|
|
- case MUSIC_AUDIO_WAV: drwav_seek_to_pcm_frame((drwav *)music.ctxData, 0); break;
|
|
|
+ case MUSIC_AUDIO_WAV: drwav_seek_to_first_pcm_frame((drwav *)music.ctxData); break;
|
|
|
#endif
|
|
|
#if defined(SUPPORT_FILEFORMAT_OGG)
|
|
|
case MUSIC_AUDIO_OGG: stb_vorbis_seek_start((stb_vorbis *)music.ctxData); break;
|
|
|
#endif
|
|
|
#if defined(SUPPORT_FILEFORMAT_FLAC)
|
|
|
- case MUSIC_AUDIO_FLAC: drflac_seek_to_pcm_frame((drflac *)music.ctxData, 0); break;
|
|
|
+ case MUSIC_AUDIO_FLAC: drflac__seek_to_first_frame((drflac *)music.ctxData); break;
|
|
|
#endif
|
|
|
#if defined(SUPPORT_FILEFORMAT_MP3)
|
|
|
- case MUSIC_AUDIO_MP3: drmp3_seek_to_pcm_frame((drmp3 *)music.ctxData, 0); break;
|
|
|
+ case MUSIC_AUDIO_MP3: drmp3_seek_to_start_of_stream((drmp3 *)music.ctxData); break;
|
|
|
#endif
|
|
|
#if defined(SUPPORT_FILEFORMAT_XM)
|
|
|
case MUSIC_MODULE_XM: jar_xm_reset((jar_xm_context_t *)music.ctxData); break;
|
|
@@ -1721,7 +1721,6 @@ void UpdateMusicStream(Music music)
|
|
|
{
|
|
|
if (music.stream.buffer == NULL) return;
|
|
|
|
|
|
- bool streamEnding = false;
|
|
|
unsigned int subBufferSizeInFrames = music.stream.buffer->sizeInFrames/2;
|
|
|
|
|
|
// On first call of this function we lazily pre-allocated a temp buffer to read audio files/memory data in
|
|
@@ -1845,22 +1844,18 @@ void UpdateMusicStream(Music music)
|
|
|
|
|
|
if (framesLeft <= subBufferSizeInFrames)
|
|
|
{
|
|
|
- // Streaming is ending, we filled latest frames from input
|
|
|
- streamEnding = true;
|
|
|
- break;
|
|
|
+ if (!music.looping)
|
|
|
+ {
|
|
|
+ // Streaming is ending, we filled latest frames from input
|
|
|
+ StopMusicStream(music);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (streamEnding)
|
|
|
- {
|
|
|
- if (!music.looping) StopMusicStream(music);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // NOTE: In case window is minimized, music stream is stopped,
|
|
|
- // just make sure to play again on window restore
|
|
|
- if (IsMusicStreamPlaying(music)) PlayMusicStream(music);
|
|
|
- }
|
|
|
+ // NOTE: In case window is minimized, music stream is stopped,
|
|
|
+ // just make sure to play again on window restore
|
|
|
+ if (IsMusicStreamPlaying(music)) PlayMusicStream(music);
|
|
|
}
|
|
|
|
|
|
// Check if any music is playing
|
|
@@ -2003,9 +1998,7 @@ void UpdateAudioStream(AudioStream stream, const void *data, int frameCount)
|
|
|
// Assuming so, but if not will need to change this logic.
|
|
|
if (subBufferSizeInFrames >= (ma_uint32)frameCount)
|
|
|
{
|
|
|
- ma_uint32 framesToWrite = subBufferSizeInFrames;
|
|
|
-
|
|
|
- if (framesToWrite > (ma_uint32)frameCount) framesToWrite = (ma_uint32)frameCount;
|
|
|
+ ma_uint32 framesToWrite = (ma_uint32)frameCount;
|
|
|
|
|
|
ma_uint32 bytesToWrite = framesToWrite*stream.channels*(stream.sampleSize/8);
|
|
|
memcpy(subBuffer, data, bytesToWrite);
|