Audio: Allow to skip loaders
This commit is contained in:
parent
8625c0a7ac
commit
40bcfb1323
|
|
@ -81,8 +81,12 @@ namespace Nz
|
||||||
return extension == "riff" || extension == "rf64" || extension == "wav" || extension == "w64";
|
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;
|
drwav wav;
|
||||||
if (!drwav_init(&wav, &ReadCallback, &SeekCallback, &stream, nullptr))
|
if (!drwav_init(&wav, &ReadCallback, &SeekCallback, &stream, nullptr))
|
||||||
return Ternary::False;
|
return Ternary::False;
|
||||||
|
|
@ -323,7 +327,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
SoundBufferLoader::Entry loaderEntry;
|
SoundBufferLoader::Entry loaderEntry;
|
||||||
loaderEntry.extensionSupport = IsSupported;
|
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;
|
loaderEntry.streamLoader = LoadSoundBuffer;
|
||||||
|
|
||||||
return loaderEntry;
|
return loaderEntry;
|
||||||
|
|
@ -333,7 +337,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
SoundStreamLoader::Entry loaderEntry;
|
SoundStreamLoader::Entry loaderEntry;
|
||||||
loaderEntry.extensionSupport = IsSupported;
|
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.fileLoader = LoadSoundStreamFile;
|
||||||
loaderEntry.memoryLoader = LoadSoundStreamMemory;
|
loaderEntry.memoryLoader = LoadSoundStreamMemory;
|
||||||
loaderEntry.streamLoader = LoadSoundStreamStream;
|
loaderEntry.streamLoader = LoadSoundStreamStream;
|
||||||
|
|
|
||||||
|
|
@ -169,8 +169,12 @@ namespace Nz
|
||||||
return extension == "flac";
|
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();
|
FLAC__StreamDecoder* decoder = FLAC__stream_decoder_new();
|
||||||
CallOnExit freeDecoder([&] { FLAC__stream_decoder_delete(decoder); });
|
CallOnExit freeDecoder([&] { FLAC__stream_decoder_delete(decoder); });
|
||||||
|
|
||||||
|
|
@ -589,7 +593,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
SoundBufferLoader::Entry loaderEntry;
|
SoundBufferLoader::Entry loaderEntry;
|
||||||
loaderEntry.extensionSupport = IsSupported;
|
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;
|
loaderEntry.streamLoader = LoadSoundBuffer;
|
||||||
|
|
||||||
return loaderEntry;
|
return loaderEntry;
|
||||||
|
|
@ -599,7 +603,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
SoundStreamLoader::Entry loaderEntry;
|
SoundStreamLoader::Entry loaderEntry;
|
||||||
loaderEntry.extensionSupport = IsSupported;
|
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.fileLoader = LoadSoundStreamFile;
|
||||||
loaderEntry.memoryLoader = LoadSoundStreamMemory;
|
loaderEntry.memoryLoader = LoadSoundStreamMemory;
|
||||||
loaderEntry.streamLoader = LoadSoundStreamStream;
|
loaderEntry.streamLoader = LoadSoundStreamStream;
|
||||||
|
|
|
||||||
|
|
@ -152,8 +152,12 @@ namespace Nz
|
||||||
return supportedExtensions.find(extension) != supportedExtensions.end();
|
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;
|
OggVorbis_File file;
|
||||||
if (ov_test_callbacks(&stream, &file, nullptr, 0, s_callbacks) != 0)
|
if (ov_test_callbacks(&stream, &file, nullptr, 0, s_callbacks) != 0)
|
||||||
return Ternary::False;
|
return Ternary::False;
|
||||||
|
|
@ -413,7 +417,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
SoundBufferLoader::Entry loaderEntry;
|
SoundBufferLoader::Entry loaderEntry;
|
||||||
loaderEntry.extensionSupport = IsSupported;
|
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;
|
loaderEntry.streamLoader = LoadSoundBuffer;
|
||||||
|
|
||||||
return loaderEntry;
|
return loaderEntry;
|
||||||
|
|
@ -423,7 +427,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
SoundStreamLoader::Entry loaderEntry;
|
SoundStreamLoader::Entry loaderEntry;
|
||||||
loaderEntry.extensionSupport = IsSupported;
|
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.fileLoader = LoadSoundStreamFile;
|
||||||
loaderEntry.memoryLoader = LoadSoundStreamMemory;
|
loaderEntry.memoryLoader = LoadSoundStreamMemory;
|
||||||
loaderEntry.streamLoader = LoadSoundStreamStream;
|
loaderEntry.streamLoader = LoadSoundStreamStream;
|
||||||
|
|
|
||||||
|
|
@ -83,8 +83,12 @@ namespace Nz
|
||||||
return extension == "mp3";
|
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;
|
mp3dec_io_t io;
|
||||||
io.read = &ReadCallback;
|
io.read = &ReadCallback;
|
||||||
io.read_data = &stream;
|
io.read_data = &stream;
|
||||||
|
|
@ -348,7 +352,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
SoundBufferLoader::Entry loaderEntry;
|
SoundBufferLoader::Entry loaderEntry;
|
||||||
loaderEntry.extensionSupport = IsSupported;
|
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;
|
loaderEntry.streamLoader = LoadSoundBuffer;
|
||||||
|
|
||||||
return loaderEntry;
|
return loaderEntry;
|
||||||
|
|
@ -358,7 +362,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
SoundStreamLoader::Entry loaderEntry;
|
SoundStreamLoader::Entry loaderEntry;
|
||||||
loaderEntry.extensionSupport = IsSupported;
|
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.fileLoader = LoadSoundStreamFile;
|
||||||
loaderEntry.memoryLoader = LoadSoundStreamMemory;
|
loaderEntry.memoryLoader = LoadSoundStreamMemory;
|
||||||
loaderEntry.streamLoader = LoadSoundStreamStream;
|
loaderEntry.streamLoader = LoadSoundStreamStream;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue