Browse Source

AnyAudioImporter: support loading OGG Vorbis files.

pull/205/head
Vladimír Vondruš 11 years ago
parent
commit
2f10505349
  1. 4
      src/MagnumPlugins/AnyAudioImporter/AnyImporter.cpp
  2. 2
      src/MagnumPlugins/AnyAudioImporter/AnyImporter.h
  3. 1
      src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt
  4. 14
      src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp
  5. 1
      src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake

4
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;

2
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

1
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)

14
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);

1
src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake

@ -30,3 +30,4 @@
#endif
#define WAV_FILE "${WAV_FILE}"
#define OGG_FILE "${OGG_FILE}"

Loading…
Cancel
Save