UpdateMusicStream takes pointer

This commit is contained in:
Zatherz 2019-08-26 03:07:39 +02:00
parent 8e86f3586d
commit 75c3fe14e5
6 changed files with 31 additions and 31 deletions

View File

@ -65,7 +65,7 @@ int main(void)
{ {
// Update // 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) // Restart music playing (stop and play)
if (IsKeyPressed(KEY_SPACE)) if (IsKeyPressed(KEY_SPACE))

View File

@ -37,7 +37,7 @@ int main(void)
{ {
// Update // 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) // Restart music playing (stop and play)
if (IsKeyPressed(KEY_SPACE)) if (IsKeyPressed(KEY_SPACE))

View File

@ -124,7 +124,7 @@ int main()
key = 0; key = 0;
} }
UpdateMusicStream(music); UpdateMusicStream(&music);
} }
// De-Initialization // De-Initialization

View File

@ -1407,29 +1407,29 @@ void StopMusicStream(Music music)
} }
// Update (re-fill) music buffers if data already processed // Update (re-fill) music buffers if data already processed
void UpdateMusicStream(Music music) void UpdateMusicStream(Music* music)
{ {
bool streamEnding = false; 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 // 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 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; if ((music->sampleLeft/music->stream.channels) >= subBufferSizeInFrames) samplesCount = subBufferSizeInFrames*music->stream.channels;
else samplesCount = music.sampleLeft; else samplesCount = music->sampleLeft;
switch (music.ctxType) switch (music->ctxType)
{ {
#if defined(SUPPORT_FILEFORMAT_OGG) #if defined(SUPPORT_FILEFORMAT_OGG)
case MUSIC_AUDIO_OGG: case MUSIC_AUDIO_OGG:
{ {
// NOTE: Returns the number of samples to process (be careful! we ask for number of shorts!) // 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; } break;
#endif #endif
@ -1437,7 +1437,7 @@ void UpdateMusicStream(Music music)
case MUSIC_AUDIO_FLAC: case MUSIC_AUDIO_FLAC:
{ {
// NOTE: Returns the number of samples to process (not required) // 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; } break;
#endif #endif
@ -1445,7 +1445,7 @@ void UpdateMusicStream(Music music)
case MUSIC_AUDIO_MP3: case MUSIC_AUDIO_MP3:
{ {
// NOTE: samplesCount, actually refers to framesCount and returns the number of frames processed // 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; } break;
#endif #endif
@ -1453,29 +1453,29 @@ void UpdateMusicStream(Music music)
case MUSIC_MODULE_XM: case MUSIC_MODULE_XM:
{ {
// NOTE: Internally this function considers 2 channels generation, so samplesCount/2 // 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; } break;
#endif #endif
#if defined(SUPPORT_FILEFORMAT_MOD) #if defined(SUPPORT_FILEFORMAT_MOD)
case MUSIC_MODULE_MOD: case MUSIC_MODULE_MOD:
{ {
// NOTE: 3rd parameter (nbsample) specify the number of stereo 16bits samples you want, so sampleCount/2 // 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; } break;
#endif #endif
default: break; 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; if (samplesCount > 1) music->sampleLeft -= samplesCount/2;
else music.sampleLeft -= samplesCount; else music->sampleLeft -= samplesCount;
} }
else music.sampleLeft -= samplesCount; else music->sampleLeft -= samplesCount;
if (music.sampleLeft <= 0) if (music->sampleLeft <= 0)
{ {
streamEnding = true; streamEnding = true;
break; break;
@ -1488,24 +1488,24 @@ void UpdateMusicStream(Music music)
// Reset audio stream for looping // Reset audio stream for looping
if (streamEnding) if (streamEnding)
{ {
StopMusicStream(music); // Stop music (and reset) StopMusicStream(*music); // Stop music (and reset)
// Decrease loopCount to stop when required // Decrease loopCount to stop when required
if (music.loopCount > 1) if (music->loopCount > 1)
{ {
music.loopCount--; // Decrease loop count music->loopCount--; // Decrease loop count
PlayMusicStream(music); // Play again PlayMusicStream(*music); // Play again
} }
else else
{ {
if (music.loopCount == 0) PlayMusicStream(music); if (music->loopCount == 0) PlayMusicStream(*music);
} }
} }
else else
{ {
// NOTE: In case window is minimized, music stream is stopped, // NOTE: In case window is minimized, music stream is stopped,
// just make sure to play again on window restore // just make sure to play again on window restore
if (IsMusicPlaying(music)) PlayMusicStream(music); if (IsMusicPlaying(*music)) PlayMusicStream(*music);
} }
} }

View File

@ -167,7 +167,7 @@ float *GetWaveData(Wave wave); // Get samples d
Music LoadMusicStream(const char *fileName); // Load music stream from file Music LoadMusicStream(const char *fileName); // Load music stream from file
void UnloadMusicStream(Music music); // Unload music stream void UnloadMusicStream(Music music); // Unload music stream
void PlayMusicStream(Music music); // Start music playing 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 StopMusicStream(Music music); // Stop music playing
void PauseMusicStream(Music music); // Pause music playing void PauseMusicStream(Music music); // Pause music playing
void ResumeMusicStream(Music music); // Resume playing paused music void ResumeMusicStream(Music music); // Resume playing paused music

View File

@ -1377,7 +1377,7 @@ RLAPI float *GetWaveData(Wave wave); // Get sam
RLAPI Music LoadMusicStream(const char *fileName); // Load music stream from file RLAPI Music LoadMusicStream(const char *fileName); // Load music stream from file
RLAPI void UnloadMusicStream(Music music); // Unload music stream RLAPI void UnloadMusicStream(Music music); // Unload music stream
RLAPI void PlayMusicStream(Music music); // Start music playing 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 StopMusicStream(Music music); // Stop music playing
RLAPI void PauseMusicStream(Music music); // Pause music playing RLAPI void PauseMusicStream(Music music); // Pause music playing
RLAPI void ResumeMusicStream(Music music); // Resume playing paused music RLAPI void ResumeMusicStream(Music music); // Resume playing paused music