Review issue and added some comments
This commit is contained in:
parent
0880be638e
commit
16842233c9
1 changed files with 16 additions and 10 deletions
26
src/audio.c
26
src/audio.c
|
@ -801,20 +801,26 @@ void ResumeMusicStream(Music music)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop music playing (close stream)
|
// Stop music playing (close stream)
|
||||||
|
// TODO: To clear a buffer, make sure they have been already processed!
|
||||||
void StopMusicStream(Music music)
|
void StopMusicStream(Music music)
|
||||||
{
|
{
|
||||||
alSourceStop(music->stream.source);
|
alSourceStop(music->stream.source);
|
||||||
|
|
||||||
|
/*
|
||||||
// Clear stream buffers
|
// Clear stream buffers
|
||||||
|
// WARNING: Queued buffers must have been processed before unqueueing and reloaded with data!!!
|
||||||
void *pcm = calloc(AUDIO_BUFFER_SIZE*music->stream.sampleSize/8*music->stream.channels, 1);
|
void *pcm = calloc(AUDIO_BUFFER_SIZE*music->stream.sampleSize/8*music->stream.channels, 1);
|
||||||
|
|
||||||
for (int i = 0; i < MAX_STREAM_BUFFERS; i++)
|
for (int i = 0; i < MAX_STREAM_BUFFERS; i++)
|
||||||
{
|
{
|
||||||
UpdateAudioStream(music->stream, pcm, AUDIO_BUFFER_SIZE);
|
|
||||||
//alBufferData(music->stream.buffers[i], music->stream.format, pcm, AUDIO_BUFFER_SIZE*music->stream.sampleSize/8*music->stream.channels, music->stream.sampleRate);
|
|
||||||
|
//UpdateAudioStream(music->stream, pcm, AUDIO_BUFFER_SIZE); // Update one buffer at a time
|
||||||
|
alBufferData(music->stream.buffers[i], music->stream.format, pcm, AUDIO_BUFFER_SIZE*music->stream.sampleSize/8*music->stream.channels, music->stream.sampleRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pcm);
|
free(pcm);
|
||||||
|
*/
|
||||||
|
|
||||||
// Restart music context
|
// Restart music context
|
||||||
switch (music->ctxType)
|
switch (music->ctxType)
|
||||||
|
@ -896,9 +902,9 @@ void UpdateMusicStream(Music music)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This error is registered when UpdateAudioStream() fails
|
// Free allocated pcm data
|
||||||
if (alGetError() == AL_INVALID_VALUE) TraceLog(WARNING, "OpenAL: Error buffering data...");
|
free(pcm);
|
||||||
|
|
||||||
// Reset audio stream for looping
|
// Reset audio stream for looping
|
||||||
if (!active)
|
if (!active)
|
||||||
|
@ -918,8 +924,6 @@ void UpdateMusicStream(Music music)
|
||||||
// just make sure to play again on window restore
|
// just make sure to play again on window restore
|
||||||
if (state != AL_PLAYING) PlayMusicStream(music);
|
if (state != AL_PLAYING) PlayMusicStream(music);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pcm);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1066,7 +1070,8 @@ void CloseAudioStream(AudioStream stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update audio stream buffers with data
|
// Update audio stream buffers with data
|
||||||
// NOTE: Only updates one buffer per call
|
// NOTE 1: Only updates one buffer of the stream source: unqueue -> update -> queue
|
||||||
|
// NOTE 2: To unqueue a buffer it needs to be processed: IsAudioBufferProcessed()
|
||||||
void UpdateAudioStream(AudioStream stream, const void *data, int samplesCount)
|
void UpdateAudioStream(AudioStream stream, const void *data, int samplesCount)
|
||||||
{
|
{
|
||||||
ALuint buffer = 0;
|
ALuint buffer = 0;
|
||||||
|
@ -1075,9 +1080,10 @@ void UpdateAudioStream(AudioStream stream, const void *data, int samplesCount)
|
||||||
// Check if any buffer was available for unqueue
|
// Check if any buffer was available for unqueue
|
||||||
if (alGetError() != AL_INVALID_VALUE)
|
if (alGetError() != AL_INVALID_VALUE)
|
||||||
{
|
{
|
||||||
alBufferData(buffer, stream.format, data, samplesCount*stream.channels*stream.sampleSize/8, stream.sampleRate);
|
alBufferData(buffer, stream.format, data, samplesCount*stream.sampleSize/8*stream.channels, stream.sampleRate);
|
||||||
alSourceQueueBuffers(stream.source, 1, &buffer);
|
alSourceQueueBuffers(stream.source, 1, &buffer);
|
||||||
}
|
}
|
||||||
|
else TraceLog(WARNING, "[AUD ID %i] Audio buffer not available for unqueuing", stream.source);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if any audio stream buffers requires refill
|
// Check if any audio stream buffers requires refill
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue