|
|
@ -105,7 +105,6 @@ static void UnloadWave(Wave wave); // Unload wave data |
|
|
|
|
|
|
|
static bool BufferMusicStream(ALuint buffer); // Fill music buffers with data |
|
|
|
static void EmptyMusicStream(void); // Empty music buffers |
|
|
|
extern void UpdateMusicStream(void); // Updates buffers (refill) for music streaming |
|
|
|
|
|
|
|
#if defined(AUDIO_STANDALONE) |
|
|
|
const char *GetExtension(const char *fileName); // Get the extension for a filename |
|
|
@ -539,7 +538,7 @@ void PlayMusicStream(char *fileName) |
|
|
|
|
|
|
|
TraceLog(INFO, "[%s] Ogg sample rate: %i", fileName, info.sample_rate); |
|
|
|
TraceLog(INFO, "[%s] Ogg channels: %i", fileName, info.channels); |
|
|
|
TraceLog(INFO, "[%s] Temp memory required: %i", fileName, info.temp_memory_required); |
|
|
|
TraceLog(DEBUG, "[%s] Temp memory required: %i", fileName, info.temp_memory_required); |
|
|
|
|
|
|
|
if (info.channels == 2) currentMusic.format = AL_FORMAT_STEREO16; |
|
|
|
else currentMusic.format = AL_FORMAT_MONO16; |
|
|
@ -567,7 +566,7 @@ void PlayMusicStream(char *fileName) |
|
|
|
alSourceQueueBuffers(currentMusic.source, 2, currentMusic.buffers); |
|
|
|
alSourcePlay(currentMusic.source); |
|
|
|
|
|
|
|
// NOTE: Regularly, we must check if a buffer has been processed and refill it: MusicStreamUpdate() |
|
|
|
// NOTE: Regularly, we must check if a buffer has been processed and refill it: UpdateMusicStream() |
|
|
|
|
|
|
|
currentMusic.totalSamplesLeft = stb_vorbis_stream_length_in_samples(currentMusic.stream) * currentMusic.channels; |
|
|
|
} |
|
|
@ -708,7 +707,7 @@ static void EmptyMusicStream(void) |
|
|
|
|
|
|
|
alGetSourcei(currentMusic.source, AL_BUFFERS_QUEUED, &queued); |
|
|
|
|
|
|
|
while(queued > 0) |
|
|
|
while (queued > 0) |
|
|
|
{ |
|
|
|
alSourceUnqueueBuffers(currentMusic.source, 1, &buffer); |
|
|
|
|
|
|
@ -739,19 +738,16 @@ void UpdateMusicStream(void) |
|
|
|
// If no more data to stream, restart music (if loop) |
|
|
|
if ((!active) && (currentMusic.loop)) |
|
|
|
{ |
|
|
|
if (currentMusic.loop) |
|
|
|
{ |
|
|
|
stb_vorbis_seek_start(currentMusic.stream); |
|
|
|
currentMusic.totalSamplesLeft = stb_vorbis_stream_length_in_samples(currentMusic.stream) * currentMusic.channels; |
|
|
|
stb_vorbis_seek_start(currentMusic.stream); |
|
|
|
currentMusic.totalSamplesLeft = stb_vorbis_stream_length_in_samples(currentMusic.stream)*currentMusic.channels; |
|
|
|
|
|
|
|
active = BufferMusicStream(buffer); |
|
|
|
} |
|
|
|
active = BufferMusicStream(buffer); |
|
|
|
} |
|
|
|
|
|
|
|
// Add refilled buffer to queue again... don't let the music stop! |
|
|
|
alSourceQueueBuffers(currentMusic.source, 1, &buffer); |
|
|
|
|
|
|
|
if(alGetError() != AL_NO_ERROR) TraceLog(WARNING, "Ogg playing, error buffering data..."); |
|
|
|
if (alGetError() != AL_NO_ERROR) TraceLog(WARNING, "Ogg playing, error buffering data..."); |
|
|
|
|
|
|
|
processed--; |
|
|
|
} |
|
|
|