diff --git a/src/Nazara/Audio/Formats/drwavLoader.cpp b/src/Nazara/Audio/Formats/drwavLoader.cpp index 31e898e6e..b8bcebe10 100644 --- a/src/Nazara/Audio/Formats/drwavLoader.cpp +++ b/src/Nazara/Audio/Formats/drwavLoader.cpp @@ -81,8 +81,12 @@ namespace Nz return extension == "riff" || extension == "rf64" || extension == "wav" || extension == "w64"; } - Ternary CheckWav(Stream& stream) + Ternary CheckWav(Stream& stream, const ResourceParameters& parameters) { + bool skip; + if (parameters.custom.GetBooleanParameter("SkipNativeWavLoader", &skip) && skip) + return Ternary::False; + drwav wav; if (!drwav_init(&wav, &ReadCallback, &SeekCallback, &stream, nullptr)) return Ternary::False; @@ -323,7 +327,7 @@ namespace Nz { SoundBufferLoader::Entry loaderEntry; loaderEntry.extensionSupport = IsSupported; - loaderEntry.streamChecker = [](Stream& stream, const SoundBufferParams&) { return CheckWav(stream); }; + loaderEntry.streamChecker = [](Stream& stream, const SoundBufferParams& parameters) { return CheckWav(stream, parameters); }; loaderEntry.streamLoader = LoadSoundBuffer; return loaderEntry; @@ -333,7 +337,7 @@ namespace Nz { SoundStreamLoader::Entry loaderEntry; loaderEntry.extensionSupport = IsSupported; - loaderEntry.streamChecker = [](Stream& stream, const SoundStreamParams&) { return CheckWav(stream); }; + loaderEntry.streamChecker = [](Stream& stream, const SoundStreamParams& parameters) { return CheckWav(stream, parameters); }; loaderEntry.fileLoader = LoadSoundStreamFile; loaderEntry.memoryLoader = LoadSoundStreamMemory; loaderEntry.streamLoader = LoadSoundStreamStream; diff --git a/src/Nazara/Audio/Formats/libflacLoader.cpp b/src/Nazara/Audio/Formats/libflacLoader.cpp index b46017d88..fbaf48e6b 100644 --- a/src/Nazara/Audio/Formats/libflacLoader.cpp +++ b/src/Nazara/Audio/Formats/libflacLoader.cpp @@ -169,8 +169,12 @@ namespace Nz return extension == "flac"; } - Ternary CheckFlac(Stream& stream) + Ternary CheckFlac(Stream& stream, const ResourceParameters& parameters) { + bool skip; + if (parameters.custom.GetBooleanParameter("SkipNativeFlacLoader", &skip) && skip) + return Ternary::False; + FLAC__StreamDecoder* decoder = FLAC__stream_decoder_new(); CallOnExit freeDecoder([&] { FLAC__stream_decoder_delete(decoder); }); @@ -589,7 +593,7 @@ namespace Nz { SoundBufferLoader::Entry loaderEntry; loaderEntry.extensionSupport = IsSupported; - loaderEntry.streamChecker = [](Stream& stream, const SoundBufferParams&) { return CheckFlac(stream); }; + loaderEntry.streamChecker = [](Stream& stream, const SoundBufferParams& parameters) { return CheckFlac(stream, parameters); }; loaderEntry.streamLoader = LoadSoundBuffer; return loaderEntry; @@ -599,7 +603,7 @@ namespace Nz { SoundStreamLoader::Entry loaderEntry; loaderEntry.extensionSupport = IsSupported; - loaderEntry.streamChecker = [](Stream& stream, const SoundStreamParams&) { return CheckFlac(stream); }; + loaderEntry.streamChecker = [](Stream& stream, const SoundStreamParams& parameters) { return CheckFlac(stream, parameters); }; loaderEntry.fileLoader = LoadSoundStreamFile; loaderEntry.memoryLoader = LoadSoundStreamMemory; loaderEntry.streamLoader = LoadSoundStreamStream; diff --git a/src/Nazara/Audio/Formats/libvorbisLoader.cpp b/src/Nazara/Audio/Formats/libvorbisLoader.cpp index bc540e587..f371f8f1a 100644 --- a/src/Nazara/Audio/Formats/libvorbisLoader.cpp +++ b/src/Nazara/Audio/Formats/libvorbisLoader.cpp @@ -152,8 +152,12 @@ namespace Nz return supportedExtensions.find(extension) != supportedExtensions.end(); } - Ternary CheckOgg(Stream& stream) + Ternary CheckOgg(Stream& stream, const ResourceParameters& parameters) { + bool skip; + if (parameters.custom.GetBooleanParameter("SkipNativeVorbisLoader", &skip) && skip) + return Ternary::False; + OggVorbis_File file; if (ov_test_callbacks(&stream, &file, nullptr, 0, s_callbacks) != 0) return Ternary::False; @@ -413,7 +417,7 @@ namespace Nz { SoundBufferLoader::Entry loaderEntry; loaderEntry.extensionSupport = IsSupported; - loaderEntry.streamChecker = [](Stream& stream, const SoundBufferParams&) { return CheckOgg(stream); }; + loaderEntry.streamChecker = [](Stream& stream, const SoundBufferParams& parameters) { return CheckOgg(stream, parameters); }; loaderEntry.streamLoader = LoadSoundBuffer; return loaderEntry; @@ -423,7 +427,7 @@ namespace Nz { SoundStreamLoader::Entry loaderEntry; loaderEntry.extensionSupport = IsSupported; - loaderEntry.streamChecker = [](Stream& stream, const SoundStreamParams&) { return CheckOgg(stream); }; + loaderEntry.streamChecker = [](Stream& stream, const SoundStreamParams& parameters) { return CheckOgg(stream, parameters); }; loaderEntry.fileLoader = LoadSoundStreamFile; loaderEntry.memoryLoader = LoadSoundStreamMemory; loaderEntry.streamLoader = LoadSoundStreamStream; diff --git a/src/Nazara/Audio/Formats/minimp3Loader.cpp b/src/Nazara/Audio/Formats/minimp3Loader.cpp index da5329048..9f6156b2b 100644 --- a/src/Nazara/Audio/Formats/minimp3Loader.cpp +++ b/src/Nazara/Audio/Formats/minimp3Loader.cpp @@ -83,8 +83,12 @@ namespace Nz return extension == "mp3"; } - Ternary CheckMp3(Stream& stream) + Ternary CheckMp3(Stream& stream, const ResourceParameters& parameters) { + bool skip; + if (parameters.custom.GetBooleanParameter("SkipNativeMP3Loader", &skip) && skip) + return Ternary::False; + mp3dec_io_t io; io.read = &ReadCallback; io.read_data = &stream; @@ -348,7 +352,7 @@ namespace Nz { SoundBufferLoader::Entry loaderEntry; loaderEntry.extensionSupport = IsSupported; - loaderEntry.streamChecker = [](Stream& stream, const SoundBufferParams&) { return CheckMp3(stream); }; + loaderEntry.streamChecker = [](Stream& stream, const SoundBufferParams& parameters) { return CheckMp3(stream, parameters); }; loaderEntry.streamLoader = LoadSoundBuffer; return loaderEntry; @@ -358,7 +362,7 @@ namespace Nz { SoundStreamLoader::Entry loaderEntry; loaderEntry.extensionSupport = IsSupported; - loaderEntry.streamChecker = [](Stream& stream, const SoundStreamParams&) { return CheckMp3(stream); }; + loaderEntry.streamChecker = [](Stream& stream, const SoundStreamParams& parameters) { return CheckMp3(stream, parameters); }; loaderEntry.fileLoader = LoadSoundStreamFile; loaderEntry.memoryLoader = LoadSoundStreamMemory; loaderEntry.streamLoader = LoadSoundStreamStream;