From 75c3fe14e53e2a23b8f2783f99e64a6246c6cf30 Mon Sep 17 00:00:00 2001 From: Zatherz Date: Mon, 26 Aug 2019 03:07:39 +0200 Subject: [PATCH] UpdateMusicStream takes pointer --- examples/audio/audio_module_playing.c | 2 +- examples/audio/audio_music_stream.c | 2 +- examples/others/raudio_standalone.c | 2 +- src/raudio.c | 48 +++++++++++++-------------- src/raudio.h | 2 +- src/raylib.h | 6 ++-- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/examples/audio/audio_module_playing.c b/examples/audio/audio_module_playing.c index 0dae8aa21..516ba1c17 100644 --- a/examples/audio/audio_module_playing.c +++ b/examples/audio/audio_module_playing.c @@ -65,7 +65,7 @@ int main(void) { // Update //---------------------------------------------------------------------------------- - UpdateMusicStream(xm); // Update music buffer with new stream data + UpdateMusicStream(&xm); // Update music buffer with new stream data // Restart music playing (stop and play) if (IsKeyPressed(KEY_SPACE)) diff --git a/examples/audio/audio_music_stream.c b/examples/audio/audio_music_stream.c index bc069dccf..b53d42922 100644 --- a/examples/audio/audio_music_stream.c +++ b/examples/audio/audio_music_stream.c @@ -37,7 +37,7 @@ int main(void) { // Update //---------------------------------------------------------------------------------- - UpdateMusicStream(music); // Update music buffer with new stream data + UpdateMusicStream(&music); // Update music buffer with new stream data // Restart music playing (stop and play) if (IsKeyPressed(KEY_SPACE)) diff --git a/examples/others/raudio_standalone.c b/examples/others/raudio_standalone.c index 9122c3210..947bf1c65 100644 --- a/examples/others/raudio_standalone.c +++ b/examples/others/raudio_standalone.c @@ -124,7 +124,7 @@ int main() key = 0; } - UpdateMusicStream(music); + UpdateMusicStream(&music); } // De-Initialization diff --git a/src/raudio.c b/src/raudio.c index 576190deb..59167fc82 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -1407,29 +1407,29 @@ void StopMusicStream(Music music) } // Update (re-fill) music buffers if data already processed -void UpdateMusicStream(Music music) +void UpdateMusicStream(Music* music) { bool streamEnding = false; - unsigned int subBufferSizeInFrames = music.stream.buffer->bufferSizeInFrames/2; + unsigned int subBufferSizeInFrames = music->stream.buffer->bufferSizeInFrames/2; // NOTE: Using dynamic allocation because it could require more than 16KB - void *pcm = RL_CALLOC(subBufferSizeInFrames*music.stream.channels*music.stream.sampleSize/8, 1); + void *pcm = RL_CALLOC(subBufferSizeInFrames*music->stream.channels*music->stream.sampleSize/8, 1); int samplesCount = 0; // Total size of data steamed in L+R samples for xm floats, individual L or R for ogg shorts - while (IsAudioStreamProcessed(music.stream)) + while (IsAudioStreamProcessed(music->stream)) { - if ((music.sampleLeft/music.stream.channels) >= subBufferSizeInFrames) samplesCount = subBufferSizeInFrames*music.stream.channels; - else samplesCount = music.sampleLeft; + if ((music->sampleLeft/music->stream.channels) >= subBufferSizeInFrames) samplesCount = subBufferSizeInFrames*music->stream.channels; + else samplesCount = music->sampleLeft; - switch (music.ctxType) + switch (music->ctxType) { #if defined(SUPPORT_FILEFORMAT_OGG) case MUSIC_AUDIO_OGG: { // NOTE: Returns the number of samples to process (be careful! we ask for number of shorts!) - stb_vorbis_get_samples_short_interleaved((stb_vorbis *)music.ctxData, music.stream.channels, (short *)pcm, samplesCount); + stb_vorbis_get_samples_short_interleaved((stb_vorbis *)music->ctxData, music->stream.channels, (short *)pcm, samplesCount); } break; #endif @@ -1437,7 +1437,7 @@ void UpdateMusicStream(Music music) case MUSIC_AUDIO_FLAC: { // NOTE: Returns the number of samples to process (not required) - drflac_read_s16((drflac *)music.ctxData, samplesCount, (short *)pcm); + drflac_read_s16((drflac *)music->ctxData, samplesCount, (short *)pcm); } break; #endif @@ -1445,7 +1445,7 @@ void UpdateMusicStream(Music music) case MUSIC_AUDIO_MP3: { // NOTE: samplesCount, actually refers to framesCount and returns the number of frames processed - drmp3_read_pcm_frames_f32((drmp3 *)music.ctxData, samplesCount/music.stream.channels, (float *)pcm); + drmp3_read_pcm_frames_f32((drmp3 *)music->ctxData, samplesCount/music->stream.channels, (float *)pcm); } break; #endif @@ -1453,29 +1453,29 @@ void UpdateMusicStream(Music music) case MUSIC_MODULE_XM: { // NOTE: Internally this function considers 2 channels generation, so samplesCount/2 - jar_xm_generate_samples_16bit((jar_xm_context_t *)music.ctxData, (short *)pcm, samplesCount/2); + jar_xm_generate_samples_16bit((jar_xm_context_t *)music->ctxData, (short *)pcm, samplesCount/2); } break; #endif #if defined(SUPPORT_FILEFORMAT_MOD) case MUSIC_MODULE_MOD: { // NOTE: 3rd parameter (nbsample) specify the number of stereo 16bits samples you want, so sampleCount/2 - jar_mod_fillbuffer((jar_mod_context_t *)music.ctxData, (short *)pcm, samplesCount/2, 0); + jar_mod_fillbuffer((jar_mod_context_t *)music->ctxData, (short *)pcm, samplesCount/2, 0); } break; #endif default: break; } - UpdateAudioStream(music.stream, pcm, samplesCount); + UpdateAudioStream(music->stream, pcm, samplesCount); - if ((music.ctxType == MUSIC_MODULE_XM) || (music.ctxType == MUSIC_MODULE_MOD)) + if ((music->ctxType == MUSIC_MODULE_XM) || (music->ctxType == MUSIC_MODULE_MOD)) { - if (samplesCount > 1) music.sampleLeft -= samplesCount/2; - else music.sampleLeft -= samplesCount; + if (samplesCount > 1) music->sampleLeft -= samplesCount/2; + else music->sampleLeft -= samplesCount; } - else music.sampleLeft -= samplesCount; + else music->sampleLeft -= samplesCount; - if (music.sampleLeft <= 0) + if (music->sampleLeft <= 0) { streamEnding = true; break; @@ -1488,24 +1488,24 @@ void UpdateMusicStream(Music music) // Reset audio stream for looping if (streamEnding) { - StopMusicStream(music); // Stop music (and reset) + StopMusicStream(*music); // Stop music (and reset) // Decrease loopCount to stop when required - if (music.loopCount > 1) + if (music->loopCount > 1) { - music.loopCount--; // Decrease loop count - PlayMusicStream(music); // Play again + music->loopCount--; // Decrease loop count + PlayMusicStream(*music); // Play again } else { - if (music.loopCount == 0) PlayMusicStream(music); + if (music->loopCount == 0) PlayMusicStream(*music); } } else { // NOTE: In case window is minimized, music stream is stopped, // just make sure to play again on window restore - if (IsMusicPlaying(music)) PlayMusicStream(music); + if (IsMusicPlaying(*music)) PlayMusicStream(*music); } } diff --git a/src/raudio.h b/src/raudio.h index 302993a9f..304304604 100644 --- a/src/raudio.h +++ b/src/raudio.h @@ -167,7 +167,7 @@ float *GetWaveData(Wave wave); // Get samples d Music LoadMusicStream(const char *fileName); // Load music stream from file void UnloadMusicStream(Music music); // Unload music stream void PlayMusicStream(Music music); // Start music playing -void UpdateMusicStream(Music music); // Updates buffers for music streaming +void UpdateMusicStream(Music* music); // Updates buffers for music streaming void StopMusicStream(Music music); // Stop music playing void PauseMusicStream(Music music); // Pause music playing void ResumeMusicStream(Music music); // Resume playing paused music diff --git a/src/raylib.h b/src/raylib.h index 0594b3700..abfaa19d7 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -106,7 +106,7 @@ #ifndef RL_FREE #define RL_FREE(p) free(p) #endif - + // NOTE: MSC C++ compiler does not support compound literals (C99 feature) // Plain structures in C++ (without constructors) can be initialized from { } initializers. #if defined(__cplusplus) @@ -1377,7 +1377,7 @@ RLAPI float *GetWaveData(Wave wave); // Get sam RLAPI Music LoadMusicStream(const char *fileName); // Load music stream from file RLAPI void UnloadMusicStream(Music music); // Unload music stream RLAPI void PlayMusicStream(Music music); // Start music playing -RLAPI void UpdateMusicStream(Music music); // Updates buffers for music streaming +RLAPI void UpdateMusicStream(Music* music); // Updates buffers for music streaming RLAPI void StopMusicStream(Music music); // Stop music playing RLAPI void PauseMusicStream(Music music); // Pause music playing RLAPI void ResumeMusicStream(Music music); // Resume playing paused music @@ -1400,7 +1400,7 @@ RLAPI bool IsAudioStreamPlaying(AudioStream stream); // Check i RLAPI void StopAudioStream(AudioStream stream); // Stop audio stream RLAPI void SetAudioStreamVolume(AudioStream stream, float volume); // Set volume for audio stream (1.0 is max level) RLAPI void SetAudioStreamPitch(AudioStream stream, float pitch); // Set pitch for audio stream (1.0 is base level) - + //------------------------------------------------------------------------------------ // Network (Module: network) //------------------------------------------------------------------------------------