[raudio] Review TRACELOG() messages, categorized
This commit is contained in:
parent
bc2c6251f8
commit
0c6c421508
1 changed files with 77 additions and 69 deletions
126
src/raudio.c
126
src/raudio.c
|
@ -383,7 +383,7 @@ void InitAudioDevice(void)
|
||||||
ma_result result = ma_context_init(NULL, 0, &ctxConfig, &AUDIO.System.context);
|
ma_result result = ma_context_init(NULL, 0, &ctxConfig, &AUDIO.System.context);
|
||||||
if (result != MA_SUCCESS)
|
if (result != MA_SUCCESS)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_ERROR, "Failed to initialize audio context");
|
TRACELOG(LOG_ERROR, "AUDIO: Failed to initialize context");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,7 +403,7 @@ void InitAudioDevice(void)
|
||||||
result = ma_device_init(&AUDIO.System.context, &config, &AUDIO.System.device);
|
result = ma_device_init(&AUDIO.System.context, &config, &AUDIO.System.device);
|
||||||
if (result != MA_SUCCESS)
|
if (result != MA_SUCCESS)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_ERROR, "Failed to initialize audio playback AUDIO.System.device");
|
TRACELOG(LOG_ERROR, "AUDIO: Failed to initialize playback device");
|
||||||
ma_context_uninit(&AUDIO.System.context);
|
ma_context_uninit(&AUDIO.System.context);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -413,7 +413,7 @@ void InitAudioDevice(void)
|
||||||
result = ma_device_start(&AUDIO.System.device);
|
result = ma_device_start(&AUDIO.System.device);
|
||||||
if (result != MA_SUCCESS)
|
if (result != MA_SUCCESS)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_ERROR, "Failed to start audio playback AUDIO.System.device");
|
TRACELOG(LOG_ERROR, "AUDIO: Failed to start playback device");
|
||||||
ma_device_uninit(&AUDIO.System.device);
|
ma_device_uninit(&AUDIO.System.device);
|
||||||
ma_context_uninit(&AUDIO.System.context);
|
ma_context_uninit(&AUDIO.System.context);
|
||||||
return;
|
return;
|
||||||
|
@ -423,21 +423,20 @@ void InitAudioDevice(void)
|
||||||
// want to look at something a bit smarter later on to keep everything real-time, if that's necessary.
|
// want to look at something a bit smarter later on to keep everything real-time, if that's necessary.
|
||||||
if (ma_mutex_init(&AUDIO.System.context, &AUDIO.System.lock) != MA_SUCCESS)
|
if (ma_mutex_init(&AUDIO.System.context, &AUDIO.System.lock) != MA_SUCCESS)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_ERROR, "Failed to create mutex for audio mixing");
|
TRACELOG(LOG_ERROR, "AUDIO: Failed to create mutex for mixing");
|
||||||
ma_device_uninit(&AUDIO.System.device);
|
ma_device_uninit(&AUDIO.System.device);
|
||||||
ma_context_uninit(&AUDIO.System.context);
|
ma_context_uninit(&AUDIO.System.context);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "Audio device initialized successfully");
|
TRACELOG(LOG_INFO, "AUDIO: Device initialized successfully");
|
||||||
TRACELOG(LOG_INFO, "Audio backend: miniaudio / %s", ma_get_backend_name(AUDIO.System.context.backend));
|
TRACELOG(LOG_INFO, " > Backend: miniaudio / %s", ma_get_backend_name(AUDIO.System.context.backend));
|
||||||
TRACELOG(LOG_INFO, "Audio format: %s -> %s", ma_get_format_name(AUDIO.System.device.playback.format), ma_get_format_name(AUDIO.System.device.playback.internalFormat));
|
TRACELOG(LOG_INFO, " > Format: %s -> %s", ma_get_format_name(AUDIO.System.device.playback.format), ma_get_format_name(AUDIO.System.device.playback.internalFormat));
|
||||||
TRACELOG(LOG_INFO, "Audio channels: %d -> %d", AUDIO.System.device.playback.channels, AUDIO.System.device.playback.internalChannels);
|
TRACELOG(LOG_INFO, " > Channels: %d -> %d", AUDIO.System.device.playback.channels, AUDIO.System.device.playback.internalChannels);
|
||||||
TRACELOG(LOG_INFO, "Audio sample rate: %d -> %d", AUDIO.System.device.sampleRate, AUDIO.System.device.playback.internalSampleRate);
|
TRACELOG(LOG_INFO, " > Sample rate: %d -> %d", AUDIO.System.device.sampleRate, AUDIO.System.device.playback.internalSampleRate);
|
||||||
TRACELOG(LOG_INFO, "Audio periods size: %d", AUDIO.System.device.playback.internalPeriodSizeInFrames*AUDIO.System.device.playback.internalPeriods);
|
TRACELOG(LOG_INFO, " > Periods size: %d", AUDIO.System.device.playback.internalPeriodSizeInFrames*AUDIO.System.device.playback.internalPeriods);
|
||||||
|
|
||||||
InitAudioBufferPool();
|
InitAudioBufferPool();
|
||||||
TRACELOG(LOG_INFO, "Audio multichannel pool size: %i", MAX_AUDIO_BUFFER_POOL_CHANNELS);
|
|
||||||
|
|
||||||
AUDIO.System.isReady = true;
|
AUDIO.System.isReady = true;
|
||||||
}
|
}
|
||||||
|
@ -453,9 +452,9 @@ void CloseAudioDevice(void)
|
||||||
|
|
||||||
CloseAudioBufferPool();
|
CloseAudioBufferPool();
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "Audio device closed successfully");
|
TRACELOG(LOG_INFO, "AUDIO: Device closed successfully");
|
||||||
}
|
}
|
||||||
else TRACELOG(LOG_WARNING, "Could not close audio device because it is not currently initialized");
|
else TRACELOG(LOG_WARNING, "AUDIO: Device could not be closed, not currently initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if device has been initialized successfully
|
// Check if device has been initialized successfully
|
||||||
|
@ -481,7 +480,7 @@ AudioBuffer *LoadAudioBuffer(ma_format format, ma_uint32 channels, ma_uint32 sam
|
||||||
|
|
||||||
if (audioBuffer == NULL)
|
if (audioBuffer == NULL)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_ERROR, "LoadAudioBuffer() : Failed to allocate memory for audio buffer");
|
TRACELOG(LOG_ERROR, "AUDIO: Failed to allocate memory for buffer");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -495,7 +494,7 @@ AudioBuffer *LoadAudioBuffer(ma_format format, ma_uint32 channels, ma_uint32 sam
|
||||||
|
|
||||||
if (result != MA_SUCCESS)
|
if (result != MA_SUCCESS)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_ERROR, "LoadAudioBuffer() : Failed to create data conversion pipeline");
|
TRACELOG(LOG_ERROR, "AUDIO: Failed to create data conversion pipeline");
|
||||||
RL_FREE(audioBuffer);
|
RL_FREE(audioBuffer);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -665,7 +664,7 @@ Wave LoadWave(const char *fileName)
|
||||||
#if defined(SUPPORT_FILEFORMAT_MP3)
|
#if defined(SUPPORT_FILEFORMAT_MP3)
|
||||||
else if (IsFileExtension(fileName, ".mp3")) wave = LoadMP3(fileName);
|
else if (IsFileExtension(fileName, ".mp3")) wave = LoadMP3(fileName);
|
||||||
#endif
|
#endif
|
||||||
else TRACELOG(LOG_WARNING, "[%s] Audio fileformat not supported, it can't be loaded", fileName);
|
else TRACELOG(LOG_WARNING, "FILEIO: [%s] File format not supported", fileName);
|
||||||
|
|
||||||
return wave;
|
return wave;
|
||||||
}
|
}
|
||||||
|
@ -704,13 +703,13 @@ Sound LoadSoundFromWave(Wave wave)
|
||||||
ma_uint32 frameCountIn = wave.sampleCount/wave.channels;
|
ma_uint32 frameCountIn = wave.sampleCount/wave.channels;
|
||||||
|
|
||||||
ma_uint32 frameCount = (ma_uint32)ma_convert_frames(NULL, 0, AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO_DEVICE_SAMPLE_RATE, NULL, frameCountIn, formatIn, wave.channels, wave.sampleRate);
|
ma_uint32 frameCount = (ma_uint32)ma_convert_frames(NULL, 0, AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO_DEVICE_SAMPLE_RATE, NULL, frameCountIn, formatIn, wave.channels, wave.sampleRate);
|
||||||
if (frameCount == 0) TRACELOG(LOG_WARNING, "LoadSoundFromWave() : Failed to get frame count for format conversion");
|
if (frameCount == 0) TRACELOG(LOG_WARNING, "SOUND: Failed to get frame count for format conversion");
|
||||||
|
|
||||||
AudioBuffer *audioBuffer = LoadAudioBuffer(AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO_DEVICE_SAMPLE_RATE, frameCount, AUDIO_BUFFER_USAGE_STATIC);
|
AudioBuffer *audioBuffer = LoadAudioBuffer(AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO_DEVICE_SAMPLE_RATE, frameCount, AUDIO_BUFFER_USAGE_STATIC);
|
||||||
if (audioBuffer == NULL) TRACELOG(LOG_WARNING, "LoadSoundFromWave() : Failed to create audio buffer");
|
if (audioBuffer == NULL) TRACELOG(LOG_WARNING, "SOUND: Failed to create buffer");
|
||||||
|
|
||||||
frameCount = (ma_uint32)ma_convert_frames(audioBuffer->data, frameCount, AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO_DEVICE_SAMPLE_RATE, wave.data, frameCountIn, formatIn, wave.channels, wave.sampleRate);
|
frameCount = (ma_uint32)ma_convert_frames(audioBuffer->data, frameCount, AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO_DEVICE_SAMPLE_RATE, wave.data, frameCountIn, formatIn, wave.channels, wave.sampleRate);
|
||||||
if (frameCount == 0) TRACELOG(LOG_WARNING, "LoadSoundFromWave() : Format conversion failed");
|
if (frameCount == 0) TRACELOG(LOG_WARNING, "SOUND: Failed format conversion");
|
||||||
|
|
||||||
sound.sampleCount = frameCount*AUDIO_DEVICE_CHANNELS;
|
sound.sampleCount = frameCount*AUDIO_DEVICE_CHANNELS;
|
||||||
sound.stream.sampleRate = AUDIO_DEVICE_SAMPLE_RATE;
|
sound.stream.sampleRate = AUDIO_DEVICE_SAMPLE_RATE;
|
||||||
|
@ -727,7 +726,7 @@ void UnloadWave(Wave wave)
|
||||||
{
|
{
|
||||||
if (wave.data != NULL) RL_FREE(wave.data);
|
if (wave.data != NULL) RL_FREE(wave.data);
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "Unloaded wave data from RAM");
|
TRACELOG(LOG_INFO, "WAVE: Unloaded wave data from RAM");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unload sound
|
// Unload sound
|
||||||
|
@ -735,7 +734,7 @@ void UnloadSound(Sound sound)
|
||||||
{
|
{
|
||||||
UnloadAudioBuffer(sound.stream.buffer);
|
UnloadAudioBuffer(sound.stream.buffer);
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "Unloaded sound data from RAM");
|
TRACELOG(LOG_INFO, "WAVE: Unloaded sound data from RAM");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update sound buffer with new data
|
// Update sound buffer with new data
|
||||||
|
@ -767,8 +766,8 @@ void ExportWave(Wave wave, const char *fileName)
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (success) TRACELOG(LOG_INFO, "Wave exported successfully: %s", fileName);
|
if (success) TRACELOG(LOG_INFO, "FILEIO: [%s] Wave data exported successfully", fileName);
|
||||||
else TRACELOG(LOG_WARNING, "Wave could not be exported.");
|
else TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to export wave data", fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Export wave sample data to code (.h)
|
// Export wave sample data to code (.h)
|
||||||
|
@ -849,12 +848,12 @@ void PlaySoundMulti(Sound sound)
|
||||||
// If no none playing pool members can be index choose the oldest
|
// If no none playing pool members can be index choose the oldest
|
||||||
if (index == -1)
|
if (index == -1)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "Pool age %i ended a sound early no room in buffer pool", AUDIO.MultiChannel.poolCounter);
|
TRACELOG(LOG_WARNING, "SOUND: Buffer pool is already full, count: %i", AUDIO.MultiChannel.poolCounter);
|
||||||
|
|
||||||
if (oldIndex == -1)
|
if (oldIndex == -1)
|
||||||
{
|
{
|
||||||
// Shouldn't be able to get here... but just in case something odd happens!
|
// Shouldn't be able to get here... but just in case something odd happens!
|
||||||
TRACELOG(LOG_ERROR, "Sound buffer pool could not determine oldest buffer not playing sound");
|
TRACELOG(LOG_WARNING, "SOUND: Buffer pool could not determine oldest buffer not playing sound");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -949,7 +948,7 @@ void WaveFormat(Wave *wave, int sampleRate, int sampleSize, int channels)
|
||||||
ma_uint32 frameCount = (ma_uint32)ma_convert_frames(NULL, 0, formatOut, channels, sampleRate, NULL, frameCountIn, formatIn, wave->channels, wave->sampleRate);
|
ma_uint32 frameCount = (ma_uint32)ma_convert_frames(NULL, 0, formatOut, channels, sampleRate, NULL, frameCountIn, formatIn, wave->channels, wave->sampleRate);
|
||||||
if (frameCount == 0)
|
if (frameCount == 0)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "WaveFormat() : Failed to get frame count for format conversion.");
|
TRACELOG(LOG_WARNING, "WAVE: Failed to get frame count for format conversion");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -958,7 +957,7 @@ void WaveFormat(Wave *wave, int sampleRate, int sampleSize, int channels)
|
||||||
frameCount = (ma_uint32)ma_convert_frames(data, frameCount, formatOut, channels, sampleRate, wave->data, frameCountIn, formatIn, wave->channels, wave->sampleRate);
|
frameCount = (ma_uint32)ma_convert_frames(data, frameCount, formatOut, channels, sampleRate, wave->data, frameCountIn, formatIn, wave->channels, wave->sampleRate);
|
||||||
if (frameCount == 0)
|
if (frameCount == 0)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "WaveFormat() : Format conversion failed.");
|
TRACELOG(LOG_WARNING, "WAVE: Failed format conversion");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1007,7 +1006,7 @@ void WaveCrop(Wave *wave, int initSample, int finalSample)
|
||||||
RL_FREE(wave->data);
|
RL_FREE(wave->data);
|
||||||
wave->data = data;
|
wave->data = data;
|
||||||
}
|
}
|
||||||
else TRACELOG(LOG_WARNING, "Wave crop range out of bounds");
|
else TRACELOG(LOG_WARNING, "WAVE: Crop range out of bounds");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get samples data from wave as a floats array
|
// Get samples data from wave as a floats array
|
||||||
|
@ -1160,16 +1159,16 @@ Music LoadMusicStream(const char *fileName)
|
||||||
else if (music.ctxType == MUSIC_MODULE_MOD) { jar_mod_unload((jar_mod_context_t *)music.ctxData); RL_FREE(music.ctxData); }
|
else if (music.ctxType == MUSIC_MODULE_MOD) { jar_mod_unload((jar_mod_context_t *)music.ctxData); RL_FREE(music.ctxData); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TRACELOG(LOG_WARNING, "[%s] Music file could not be opened", fileName);
|
TRACELOG(LOG_WARNING, "FILEIO: [%s] Music file could not be opened", fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Show some music stream info
|
// Show some music stream info
|
||||||
TRACELOG(LOG_INFO, "[%s] Music file successfully loaded:", fileName);
|
TRACELOG(LOG_INFO, "FILEIO: [%s] Music file successfully loaded:", fileName);
|
||||||
TRACELOG(LOG_INFO, " Total samples: %i", music.sampleCount);
|
TRACELOG(LOG_INFO, " > Total samples: %i", music.sampleCount);
|
||||||
TRACELOG(LOG_INFO, " Sample rate: %i Hz", music.stream.sampleRate);
|
TRACELOG(LOG_INFO, " > Sample rate: %i Hz", music.stream.sampleRate);
|
||||||
TRACELOG(LOG_INFO, " Sample size: %i bits", music.stream.sampleSize);
|
TRACELOG(LOG_INFO, " > Sample size: %i bits", music.stream.sampleSize);
|
||||||
TRACELOG(LOG_INFO, " Channels: %i (%s)", music.stream.channels, (music.stream.channels == 1)? "Mono" : (music.stream.channels == 2)? "Stereo" : "Multi");
|
TRACELOG(LOG_INFO, " > Channels: %i (%s)", music.stream.channels, (music.stream.channels == 1)? "Mono" : (music.stream.channels == 2)? "Stereo" : "Multi");
|
||||||
}
|
}
|
||||||
|
|
||||||
return music;
|
return music;
|
||||||
|
@ -1430,9 +1429,9 @@ AudioStream InitAudioStream(unsigned int sampleRate, unsigned int sampleSize, un
|
||||||
if (stream.buffer != NULL)
|
if (stream.buffer != NULL)
|
||||||
{
|
{
|
||||||
stream.buffer->looping = true; // Always loop for streaming buffers
|
stream.buffer->looping = true; // Always loop for streaming buffers
|
||||||
TRACELOG(LOG_INFO, "Audio stream initialized successfully (%i Hz, %i bit, %s)", stream.sampleRate, stream.sampleSize, (stream.channels == 1)? "Mono" : "Stereo");
|
TRACELOG(LOG_INFO, "STREAM: Initialized successfully (%i Hz, %i bit, %s)", stream.sampleRate, stream.sampleSize, (stream.channels == 1)? "Mono" : "Stereo");
|
||||||
}
|
}
|
||||||
else TRACELOG(LOG_ERROR, "Audio stream could not be created: Failed to load audio buffer");
|
else TRACELOG(LOG_WARNING, "STREAM: Failed to load audio buffer, stream could not be created");
|
||||||
|
|
||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
|
@ -1442,7 +1441,7 @@ void CloseAudioStream(AudioStream stream)
|
||||||
{
|
{
|
||||||
UnloadAudioBuffer(stream.buffer);
|
UnloadAudioBuffer(stream.buffer);
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "Unloaded audio stream data");
|
TRACELOG(LOG_INFO, "STREAM: Unloaded audio stream data from RAM");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update audio stream buffers with data
|
// Update audio stream buffers with data
|
||||||
|
@ -1493,9 +1492,9 @@ void UpdateAudioStream(AudioStream stream, const void *data, int samplesCount)
|
||||||
|
|
||||||
stream.buffer->isSubBufferProcessed[subBufferToUpdate] = false;
|
stream.buffer->isSubBufferProcessed[subBufferToUpdate] = false;
|
||||||
}
|
}
|
||||||
else TRACELOG(LOG_ERROR, "UpdateAudioStream() : Attempting to write too many frames to buffer");
|
else TRACELOG(LOG_WARNING, "STREAM: Attempting to write too many frames to buffer");
|
||||||
}
|
}
|
||||||
else TRACELOG(LOG_ERROR, "UpdateAudioStream() : Audio buffer not available for updating");
|
else TRACELOG(LOG_WARNING, "STREAM: Buffer not available for updating");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1565,7 +1564,7 @@ static void OnLog(ma_context *pContext, ma_device *pDevice, ma_uint32 logLevel,
|
||||||
(void)pContext;
|
(void)pContext;
|
||||||
(void)pDevice;
|
(void)pDevice;
|
||||||
|
|
||||||
TRACELOG(LOG_ERROR, message); // All log messages from miniaudio are errors
|
TRACELOG(LOG_ERROR, "miniaudio: %s", message); // All log messages from miniaudio are errors
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reads audio data from an AudioBuffer object in internal format.
|
// Reads audio data from an AudioBuffer object in internal format.
|
||||||
|
@ -1807,6 +1806,9 @@ static void InitAudioBufferPool(void)
|
||||||
{
|
{
|
||||||
AUDIO.MultiChannel.pool[i] = LoadAudioBuffer(AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO_DEVICE_SAMPLE_RATE, 0, AUDIO_BUFFER_USAGE_STATIC);
|
AUDIO.MultiChannel.pool[i] = LoadAudioBuffer(AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO_DEVICE_SAMPLE_RATE, 0, AUDIO_BUFFER_USAGE_STATIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Verification required for log
|
||||||
|
TRACELOG(LOG_INFO, "AUDIO: Multichannel pool size: %i", MAX_AUDIO_BUFFER_POOL_CHANNELS);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close the audio buffers pool
|
// Close the audio buffers pool
|
||||||
|
@ -1857,7 +1859,7 @@ static Wave LoadWAV(const char *fileName)
|
||||||
|
|
||||||
if (wavFile == NULL)
|
if (wavFile == NULL)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] WAV file could not be opened", fileName);
|
TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open WAV file", fileName);
|
||||||
wave.data = NULL;
|
wave.data = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1875,7 +1877,7 @@ static Wave LoadWAV(const char *fileName)
|
||||||
(wavRiffHeader.format[2] != 'V') ||
|
(wavRiffHeader.format[2] != 'V') ||
|
||||||
(wavRiffHeader.format[3] != 'E'))
|
(wavRiffHeader.format[3] != 'E'))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] Invalid RIFF or WAVE Header", fileName);
|
TRACELOG(LOG_WARNING, "WAVE: [%s] Invalid RIFF or WAVE header", fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1886,7 +1888,7 @@ static Wave LoadWAV(const char *fileName)
|
||||||
if ((wavFormat.subChunkID[0] != 'f') || (wavFormat.subChunkID[1] != 'm') ||
|
if ((wavFormat.subChunkID[0] != 'f') || (wavFormat.subChunkID[1] != 'm') ||
|
||||||
(wavFormat.subChunkID[2] != 't') || (wavFormat.subChunkID[3] != ' '))
|
(wavFormat.subChunkID[2] != 't') || (wavFormat.subChunkID[3] != ' '))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] Invalid Wave format", fileName);
|
TRACELOG(LOG_WARNING, "WAVE: [%s] Invalid Wave format", fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1900,7 +1902,7 @@ static Wave LoadWAV(const char *fileName)
|
||||||
if ((wavData.subChunkID[0] != 'd') || (wavData.subChunkID[1] != 'a') ||
|
if ((wavData.subChunkID[0] != 'd') || (wavData.subChunkID[1] != 'a') ||
|
||||||
(wavData.subChunkID[2] != 't') || (wavData.subChunkID[3] != 'a'))
|
(wavData.subChunkID[2] != 't') || (wavData.subChunkID[3] != 'a'))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] Invalid data header", fileName);
|
TRACELOG(LOG_WARNING, "WAVE: [%s] Invalid data header", fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1918,7 +1920,7 @@ static Wave LoadWAV(const char *fileName)
|
||||||
// NOTE: Only support 8 bit, 16 bit and 32 bit sample sizes
|
// NOTE: Only support 8 bit, 16 bit and 32 bit sample sizes
|
||||||
if ((wave.sampleSize != 8) && (wave.sampleSize != 16) && (wave.sampleSize != 32))
|
if ((wave.sampleSize != 8) && (wave.sampleSize != 16) && (wave.sampleSize != 32))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] WAV sample size (%ibit) not supported, converted to 16bit", fileName, wave.sampleSize);
|
TRACELOG(LOG_WARNING, "WAVE: [%s] Sample size (%ibit) not supported, converted to 16bit", fileName, wave.sampleSize);
|
||||||
WaveFormat(&wave, wave.sampleRate, 16, wave.channels);
|
WaveFormat(&wave, wave.sampleRate, 16, wave.channels);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1926,13 +1928,13 @@ static Wave LoadWAV(const char *fileName)
|
||||||
if (wave.channels > 2)
|
if (wave.channels > 2)
|
||||||
{
|
{
|
||||||
WaveFormat(&wave, wave.sampleRate, wave.sampleSize, 2);
|
WaveFormat(&wave, wave.sampleRate, wave.sampleSize, 2);
|
||||||
TRACELOG(LOG_WARNING, "[%s] WAV channels number (%i) not supported, converted to 2 channels", fileName, wave.channels);
|
TRACELOG(LOG_WARNING, "WAVE: [%s] Channels number (%i) not supported, converted to 2 channels", fileName, wave.channels);
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: subChunkSize comes in bytes, we need to translate it to number of samples
|
// NOTE: subChunkSize comes in bytes, we need to translate it to number of samples
|
||||||
wave.sampleCount = (wavData.subChunkSize/(wave.sampleSize/8))/wave.channels;
|
wave.sampleCount = (wavData.subChunkSize/(wave.sampleSize/8))/wave.channels;
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "[%s] WAV file loaded successfully (%i Hz, %i bit, %s)", fileName, wave.sampleRate, wave.sampleSize, (wave.channels == 1)? "Mono" : "Stereo");
|
TRACELOG(LOG_INFO, "WAVE: [%s] File loaded successfully (%i Hz, %i bit, %s)", fileName, wave.sampleRate, wave.sampleSize, (wave.channels == 1)? "Mono" : "Stereo");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1974,7 +1976,7 @@ static int SaveWAV(Wave wave, const char *fileName)
|
||||||
|
|
||||||
FILE *wavFile = fopen(fileName, "wb");
|
FILE *wavFile = fopen(fileName, "wb");
|
||||||
|
|
||||||
if (wavFile == NULL) TRACELOG(LOG_WARNING, "[%s] WAV audio file could not be created", fileName);
|
if (wavFile == NULL) TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open audio file", fileName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RiffHeader riffHeader;
|
RiffHeader riffHeader;
|
||||||
|
@ -2033,7 +2035,7 @@ static Wave LoadOGG(const char *fileName)
|
||||||
|
|
||||||
stb_vorbis *oggFile = stb_vorbis_open_filename(fileName, NULL, NULL);
|
stb_vorbis *oggFile = stb_vorbis_open_filename(fileName, NULL, NULL);
|
||||||
|
|
||||||
if (oggFile == NULL) TRACELOG(LOG_WARNING, "[%s] OGG file could not be opened", fileName);
|
if (oggFile == NULL) TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open OGG file", fileName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stb_vorbis_info info = stb_vorbis_get_info(oggFile);
|
stb_vorbis_info info = stb_vorbis_get_info(oggFile);
|
||||||
|
@ -2044,13 +2046,13 @@ static Wave LoadOGG(const char *fileName)
|
||||||
wave.sampleCount = (unsigned int)stb_vorbis_stream_length_in_samples(oggFile)*info.channels; // Independent by channel
|
wave.sampleCount = (unsigned int)stb_vorbis_stream_length_in_samples(oggFile)*info.channels; // Independent by channel
|
||||||
|
|
||||||
float totalSeconds = stb_vorbis_stream_length_in_seconds(oggFile);
|
float totalSeconds = stb_vorbis_stream_length_in_seconds(oggFile);
|
||||||
if (totalSeconds > 10) TRACELOG(LOG_WARNING, "[%s] Ogg audio length is larger than 10 seconds (%f), that's a big file in memory, consider music streaming", fileName, totalSeconds);
|
if (totalSeconds > 10) TRACELOG(LOG_WARNING, "WAVE: [%s] Ogg audio length larger than 10 seconds (%f), that's a big file in memory, consider music streaming", fileName, totalSeconds);
|
||||||
|
|
||||||
wave.data = (short *)RL_MALLOC(wave.sampleCount*wave.channels*sizeof(short));
|
wave.data = (short *)RL_MALLOC(wave.sampleCount*wave.channels*sizeof(short));
|
||||||
|
|
||||||
// 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(oggFile, info.channels, (short *)wave.data, wave.sampleCount*wave.channels);
|
stb_vorbis_get_samples_short_interleaved(oggFile, info.channels, (short *)wave.data, wave.sampleCount*wave.channels);
|
||||||
TRACELOG(LOG_INFO, "[%s] OGG file loaded successfully (%i Hz, %i bit, %s)", fileName, wave.sampleRate, wave.sampleSize, (wave.channels == 1)? "Mono" : "Stereo");
|
TRACELOG(LOG_INFO, "WAVE: [%s] OGG file loaded successfully (%i Hz, %i bit, %s)", fileName, wave.sampleRate, wave.sampleSize, (wave.channels == 1)? "Mono" : "Stereo");
|
||||||
|
|
||||||
stb_vorbis_close(oggFile);
|
stb_vorbis_close(oggFile);
|
||||||
}
|
}
|
||||||
|
@ -2064,20 +2066,23 @@ static Wave LoadOGG(const char *fileName)
|
||||||
// NOTE: Using dr_flac library
|
// NOTE: Using dr_flac library
|
||||||
static Wave LoadFLAC(const char *fileName)
|
static Wave LoadFLAC(const char *fileName)
|
||||||
{
|
{
|
||||||
Wave wave;
|
Wave wave = { 0 };
|
||||||
|
|
||||||
// Decode an entire FLAC file in one go
|
// Decode an entire FLAC file in one go
|
||||||
unsigned long long int totalSampleCount;
|
unsigned long long int totalSampleCount = 0;
|
||||||
wave.data = drflac_open_file_and_read_pcm_frames_s16(fileName, &wave.channels, &wave.sampleRate, &totalSampleCount);
|
wave.data = drflac_open_file_and_read_pcm_frames_s16(fileName, &wave.channels, &wave.sampleRate, &totalSampleCount);
|
||||||
|
|
||||||
|
if (wave.data == NULL) TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to load FLAC data", fileName);
|
||||||
|
else
|
||||||
|
{
|
||||||
wave.sampleCount = (unsigned int)totalSampleCount;
|
wave.sampleCount = (unsigned int)totalSampleCount;
|
||||||
wave.sampleSize = 16;
|
wave.sampleSize = 16;
|
||||||
|
|
||||||
// NOTE: Only support up to 2 channels (mono, stereo)
|
// NOTE: Only support up to 2 channels (mono, stereo)
|
||||||
if (wave.channels > 2) TRACELOG(LOG_WARNING, "[%s] FLAC channels number (%i) not supported", fileName, wave.channels);
|
if (wave.channels > 2) TRACELOG(LOG_WARNING, "WAVE: [%s] FLAC channels number (%i) not supported", fileName, wave.channels);
|
||||||
|
|
||||||
if (wave.data == NULL) TRACELOG(LOG_WARNING, "[%s] FLAC data could not be loaded", fileName);
|
TRACELOG(LOG_INFO, "WAVE: [%s] FLAC file loaded successfully (%i Hz, %i bit, %s)", fileName, wave.sampleRate, wave.sampleSize, (wave.channels == 1)? "Mono" : "Stereo");
|
||||||
else TRACELOG(LOG_INFO, "[%s] FLAC file loaded successfully (%i Hz, %i bit, %s)", fileName, wave.sampleRate, wave.sampleSize, (wave.channels == 1)? "Mono" : "Stereo");
|
}
|
||||||
|
|
||||||
return wave;
|
return wave;
|
||||||
}
|
}
|
||||||
|
@ -2095,16 +2100,19 @@ static Wave LoadMP3(const char *fileName)
|
||||||
drmp3_config config = { 0 };
|
drmp3_config config = { 0 };
|
||||||
wave.data = drmp3_open_file_and_read_f32(fileName, &config, &totalFrameCount);
|
wave.data = drmp3_open_file_and_read_f32(fileName, &config, &totalFrameCount);
|
||||||
|
|
||||||
|
if (wave.data == NULL) TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to load MP3 data", fileName);
|
||||||
|
else
|
||||||
|
{
|
||||||
wave.channels = config.outputChannels;
|
wave.channels = config.outputChannels;
|
||||||
wave.sampleRate = config.outputSampleRate;
|
wave.sampleRate = config.outputSampleRate;
|
||||||
wave.sampleCount = (int)totalFrameCount*wave.channels;
|
wave.sampleCount = (int)totalFrameCount*wave.channels;
|
||||||
wave.sampleSize = 32;
|
wave.sampleSize = 32;
|
||||||
|
|
||||||
// NOTE: Only support up to 2 channels (mono, stereo)
|
// NOTE: Only support up to 2 channels (mono, stereo)
|
||||||
if (wave.channels > 2) TRACELOG(LOG_WARNING, "[%s] MP3 channels number (%i) not supported", fileName, wave.channels);
|
if (wave.channels > 2) TRACELOG(LOG_WARNING, "WAVE: [%s] MP3 channels number (%i) not supported", fileName, wave.channels);
|
||||||
|
|
||||||
if (wave.data == NULL) TRACELOG(LOG_WARNING, "[%s] MP3 data could not be loaded", fileName);
|
TRACELOG(LOG_INFO, "WAVE: [%s] MP3 file loaded successfully (%i Hz, %i bit, %s)", fileName, wave.sampleRate, wave.sampleSize, (wave.channels == 1)? "Mono" : "Stereo");
|
||||||
else TRACELOG(LOG_INFO, "[%s] MP3 file loaded successfully (%i Hz, %i bit, %s)", fileName, wave.sampleRate, wave.sampleSize, (wave.channels == 1)? "Mono" : "Stereo");
|
}
|
||||||
|
|
||||||
return wave;
|
return wave;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue