From 2f10505349a60627b2c97b24a9a4facbec689749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 10 Oct 2015 12:30:22 +0200 Subject: [PATCH] AnyAudioImporter: support loading OGG Vorbis files. --- src/MagnumPlugins/AnyAudioImporter/AnyImporter.cpp | 4 +++- src/MagnumPlugins/AnyAudioImporter/AnyImporter.h | 2 ++ .../AnyAudioImporter/Test/CMakeLists.txt | 1 + src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp | 14 ++++++++++++++ .../AnyAudioImporter/Test/configure.h.cmake | 1 + 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/MagnumPlugins/AnyAudioImporter/AnyImporter.cpp b/src/MagnumPlugins/AnyAudioImporter/AnyImporter.cpp index 2c994aed7..75de033b2 100644 --- a/src/MagnumPlugins/AnyAudioImporter/AnyImporter.cpp +++ b/src/MagnumPlugins/AnyAudioImporter/AnyImporter.cpp @@ -49,7 +49,9 @@ void AnyImporter::doOpenFile(const std::string& filename) { /* Detect type from extension */ std::string plugin; - if(Utility::String::endsWith(filename, ".wav")) + if(Utility::String::endsWith(filename, ".ogg")) + plugin = "VorbisAudioImporter"; + else if(Utility::String::endsWith(filename, ".wav")) plugin = "WavAudioImporter"; else { Error() << "Audio::AnyImporter::openFile(): cannot determine type of file" << filename; diff --git a/src/MagnumPlugins/AnyAudioImporter/AnyImporter.h b/src/MagnumPlugins/AnyAudioImporter/AnyImporter.h index 39a5f2da4..f47a3cc00 100644 --- a/src/MagnumPlugins/AnyAudioImporter/AnyImporter.h +++ b/src/MagnumPlugins/AnyAudioImporter/AnyImporter.h @@ -52,6 +52,8 @@ information. Supported formats: +- OGG Vorbis (`*.ogg`), loaded with any plugin that provides + `VorbisAudioImporter` - WAV (`*.wav`), loaded with @ref WavImporter "WavAudioImporter" or any other plugin that provides it diff --git a/src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt b/src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt index dfed4c423..48393c120 100644 --- a/src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt @@ -26,6 +26,7 @@ include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}) set(WAV_FILE ${CMAKE_CURRENT_SOURCE_DIR}/stereo8.wav) +set(OGG_FILE ${CMAKE_SOURCE_DIR}/src/MagnumPlugins/StbVorbisAudioImporter/Test/mono16.ogg) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/configure.h) diff --git a/src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp b/src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp index af87d1de2..6b42b4580 100644 --- a/src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp +++ b/src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp @@ -39,6 +39,7 @@ struct AnyImporterTest: TestSuite::Tester { explicit AnyImporterTest(); void wav(); + void ogg(); void unknown(); @@ -48,6 +49,7 @@ private: AnyImporterTest::AnyImporterTest(): _manager{MAGNUM_PLUGINS_AUDIOIMPORTER_DIR} { addTests({&AnyImporterTest::wav, + &AnyImporterTest::ogg, &AnyImporterTest::unknown}); } @@ -64,6 +66,18 @@ void AnyImporterTest::wav() { CORRADE_COMPARE(importer.frequency(), 96000); } +void AnyImporterTest::ogg() { + if(_manager.loadState("VorbisAudioImporter") == PluginManager::LoadState::NotFound) + CORRADE_SKIP("VorbisAudioImporter plugin not found, cannot test"); + + AnyImporter importer{_manager}; + CORRADE_VERIFY(importer.openFile(OGG_FILE)); + + /* Check only parameters, as it is good enough proof that it is working */ + CORRADE_COMPARE(importer.format(), Buffer::Format::Mono16); + CORRADE_COMPARE(importer.frequency(), 96000); +} + void AnyImporterTest::unknown() { std::ostringstream output; Error::setOutput(&output); diff --git a/src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake b/src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake index 5bec68853..87ee44b30 100644 --- a/src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake +++ b/src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake @@ -30,3 +30,4 @@ #endif #define WAV_FILE "${WAV_FILE}" +#define OGG_FILE "${OGG_FILE}"