Browse Source

Audio: moved Buffer::Format to BufferFormat.

More consistent with what's done elsewhere, reduces header dependencies,
allows me to (later) make this independent on the AL library and also
works around a Doxygen bug. Win win!
pull/233/head
Vladimír Vondruš 8 years ago
parent
commit
3a78c4dd5a
  1. 1
      doc/changelog.dox
  2. 2
      src/Magnum/Audio/AbstractImporter.cpp
  3. 6
      src/Magnum/Audio/AbstractImporter.h
  4. 7
      src/Magnum/Audio/Audio.h
  5. 167
      src/Magnum/Audio/Buffer.h
  6. 8
      src/Magnum/Audio/BufferFormat.cpp
  7. 199
      src/Magnum/Audio/BufferFormat.h
  8. 3
      src/Magnum/Audio/CMakeLists.txt
  9. 2
      src/Magnum/Audio/Test/AbstractImporterTest.cpp
  10. 18
      src/Magnum/Audio/Test/BufferFormatTest.cpp
  11. 4
      src/Magnum/Audio/Test/CMakeLists.txt
  12. 2
      src/MagnumPlugins/AnyAudioImporter/AnyImporter.cpp
  13. 2
      src/MagnumPlugins/AnyAudioImporter/AnyImporter.h
  14. 2
      src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp
  15. 26
      src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp
  16. 26
      src/MagnumPlugins/WavAudioImporter/WavImporter.cpp
  17. 20
      src/MagnumPlugins/WavAudioImporter/WavImporter.h

1
doc/changelog.dox

@ -120,6 +120,7 @@ See also:
@subsection changelog-latest-deprecated Deprecated APIs @subsection changelog-latest-deprecated Deprecated APIs
- `Audio::Buffer::Format` is deprecated, use `Audio::BufferFormat` instead
- `setData()` functions in the @ref Image and @ref CompressedImage classes - `setData()` functions in the @ref Image and @ref CompressedImage classes
are deprecated because they don't offer anything extra over simple are deprecated because they don't offer anything extra over simple
move-assignment of a new instance. move-assignment of a new instance.

2
src/Magnum/Audio/AbstractImporter.cpp

@ -97,7 +97,7 @@ void AbstractImporter::close() {
} }
} }
Buffer::Format AbstractImporter::format() const { BufferFormat AbstractImporter::format() const {
CORRADE_ASSERT(isOpened(), "Audio::AbstractImporter::format(): no file opened", {}); CORRADE_ASSERT(isOpened(), "Audio::AbstractImporter::format(): no file opened", {});
return doFormat(); return doFormat();
} }

6
src/Magnum/Audio/AbstractImporter.h

@ -32,7 +32,7 @@
#include <Corrade/PluginManager/AbstractManagingPlugin.h> #include <Corrade/PluginManager/AbstractManagingPlugin.h>
#include "Magnum/Magnum.h" #include "Magnum/Magnum.h"
#include "Magnum/Audio/Buffer.h" #include "Magnum/Audio/BufferFormat.h"
namespace Magnum { namespace Audio { namespace Magnum { namespace Audio {
@ -151,7 +151,7 @@ class MAGNUM_AUDIO_EXPORT AbstractImporter: public PluginManager::AbstractManagi
/** @{ @name Data access */ /** @{ @name Data access */
/** @brief Sample format */ /** @brief Sample format */
Buffer::Format format() const; BufferFormat format() const;
/** @brief Sample frequency */ /** @brief Sample frequency */
UnsignedInt frequency() const; UnsignedInt frequency() const;
@ -187,7 +187,7 @@ class MAGNUM_AUDIO_EXPORT AbstractImporter: public PluginManager::AbstractManagi
virtual void doClose() = 0; virtual void doClose() = 0;
/** @brief Implementation for @ref format() */ /** @brief Implementation for @ref format() */
virtual Buffer::Format doFormat() const = 0; virtual BufferFormat doFormat() const = 0;
/** @brief Implementation for @ref frequency() */ /** @brief Implementation for @ref frequency() */
virtual UnsignedInt doFrequency() const = 0; virtual UnsignedInt doFrequency() const = 0;

7
src/Magnum/Audio/Audio.h

@ -31,10 +31,17 @@
#include <Magnum/Magnum.h> #include <Magnum/Magnum.h>
#ifndef DOXYGEN_GENERATING_OUTPUT
typedef int ALenum;
#endif
namespace Magnum { namespace Audio { namespace Magnum { namespace Audio {
#ifndef DOXYGEN_GENERATING_OUTPUT #ifndef DOXYGEN_GENERATING_OUTPUT
class AbstractImporter; class AbstractImporter;
enum class BufferFormat: ALenum;
class Buffer; class Buffer;
class Context; class Context;
class Source; class Source;

167
src/Magnum/Audio/Buffer.h

@ -37,165 +37,25 @@
#include <Corrade/Containers/ArrayView.h> #include <Corrade/Containers/ArrayView.h>
#include "Magnum/Magnum.h" #include "Magnum/Magnum.h"
#include "Magnum/Audio/Audio.h"
#include "Magnum/Audio/visibility.h" #include "Magnum/Audio/visibility.h"
#ifdef MAGNUM_BUILD_DEPRECATED
#include <Corrade/Utility/Macros.h>
#include "Magnum/Audio/BufferFormat.h"
#endif
namespace Magnum { namespace Audio { namespace Magnum { namespace Audio {
/** @brief Sample buffer */ /** @brief Sample buffer */
class Buffer { class Buffer {
public: public:
/** #ifdef MAGNUM_BUILD_DEPRECATED
* @brief Sample format /** @brief @copybrief BufferFormat
* * @deprecated Use @ref BufferFormat instead.
* @note Multi-channel format is played without 3D spatialization
* (useful for background music)
* @see @ref setData()
* @m_enum_values_as_keywords
*/ */
enum class Format: ALenum { typedef CORRADE_DEPRECATED("use BufferFormat instead") BufferFormat Format;
Mono8 = AL_FORMAT_MONO8, /**< 8-bit unsigned mono */ #endif
Mono16 = AL_FORMAT_MONO16, /**< 16-bit signed mono */
Stereo8 = AL_FORMAT_STEREO8, /**< 8-bit interleaved unsigned stereo */
Stereo16 = AL_FORMAT_STEREO16, /**< 16-bit interleaved signed stereo */
/**
* 8-bit mono [A-Law Compressed Sound Format](https://en.wikipedia.org/wiki/A-law_algorithm)
* @requires_al_extension Extension @al_extension{EXT,ALAW}
*/
MonoALaw = AL_FORMAT_MONO_ALAW_EXT,
/**
* 8-bit interleaved stereo [A-Law Compressed Sound Format](https://en.wikipedia.org/wiki/A-law_algorithm)
* @requires_al_extension Extension @al_extension{EXT,ALAW}
*/
StereoALaw = AL_FORMAT_STEREO_ALAW_EXT,
/**
* 8-bit mono [μ-Law Compressed Sound Format](https://en.wikipedia.org/wiki/Μ-law_algorithm)
* @requires_al_extension Extension @al_extension{EXT,MULAW}
*/
MonoMuLaw = AL_FORMAT_MONO_MULAW_EXT,
/**
* 8-bit interleaved [μ-Law Compressed Sound Format](https://en.wikipedia.org/wiki/Μ-law_algorithm)
* @requires_al_extension Extension @al_extension{EXT,MULAW}
*/
StereoMuLaw = AL_FORMAT_STEREO_MULAW_EXT,
/**
* 32-bit floating-point mono
* @requires_al_extension Extension @al_extension{EXT,float32}
*/
MonoFloat = AL_FORMAT_MONO_FLOAT32,
/**
* 32-bit interleaved floating-point stereo
* @requires_al_extension Extension @al_extension{EXT,float32}
*/
StereoFloat = AL_FORMAT_STEREO_FLOAT32,
/**
* 64-bit floating-point mono
* @requires_al_extension Extension @al_extension{EXT,double}
*/
MonoDouble = AL_FORMAT_MONO_DOUBLE_EXT,
/**
* 64-bit interleaved floating-point stereo
* @requires_al_extension Extension @al_extension{EXT,double}
*/
StereoDouble = AL_FORMAT_STEREO_DOUBLE_EXT,
/**
* 8-bit unsigned quadrophonic
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Quad8 = AL_FORMAT_QUAD8,
/**
* 16-bit signed quadrophonic
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Quad16 = AL_FORMAT_QUAD16,
/**
* 32-bit interleaved floating-point quadrophonic
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Quad32 = AL_FORMAT_QUAD32,
/**
* 8-bit unsigned rear
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Rear8 = AL_FORMAT_REAR8,
/**
* 16-bit signed rear
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Rear16 = AL_FORMAT_REAR16,
/**
* 32-bit interleaved floating-point rear
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Rear32 = AL_FORMAT_REAR32,
/**
* 8-bit unsigned 5.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround51Channel8 = AL_FORMAT_51CHN8,
/**
* 16-bit signed 5.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround51Channel16 = AL_FORMAT_51CHN16,
/**
* 32-bit interleaved floating-point 5.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround51Channel32 = AL_FORMAT_51CHN32,
/**
* 8-bit unsigned 6.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround61Channel8 = AL_FORMAT_61CHN8,
/**
* 16-bit signed 6.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround61Channel16 = AL_FORMAT_61CHN16,
/**
* 32-bit interleaved floating-point 6.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround61Channel32 = AL_FORMAT_61CHN32,
/**
* 8-bit unsigned 7.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround71Channel8 = AL_FORMAT_71CHN8,
/**
* 16-bit signed 7.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround71Channel16 = AL_FORMAT_71CHN16,
/**
* 32-bit interleaved floating-point 7.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround71Channel32 = AL_FORMAT_71CHN32
};
/** /**
* @brief Constructor * @brief Constructor
@ -237,7 +97,7 @@ class Buffer {
* *
* @see @fn_al_keyword{BufferData} * @see @fn_al_keyword{BufferData}
*/ */
Buffer& setData(Format format, Containers::ArrayView<const void> data, ALsizei frequency) { Buffer& setData(BufferFormat format, Containers::ArrayView<const void> data, ALsizei frequency) {
alBufferData(_id, ALenum(format), data, data.size(), frequency); alBufferData(_id, ALenum(format), data, data.size(), frequency);
return *this; return *this;
} }
@ -246,9 +106,6 @@ class Buffer {
ALuint _id; ALuint _id;
}; };
/** @debugoperatorclassenum{Buffer,Buffer::Format} */
MAGNUM_AUDIO_EXPORT Debug& operator<<(Debug& debug, Buffer::Format value);
inline Buffer::Buffer(Buffer&& other): _id(other._id) { inline Buffer::Buffer(Buffer&& other): _id(other._id) {
other._id = 0; other._id = 0;
} }

8
src/Magnum/Audio/Buffer.cpp → src/Magnum/Audio/BufferFormat.cpp

@ -23,16 +23,16 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include "Buffer.h" #include "BufferFormat.h"
#include <Corrade/Utility/Debug.h> #include <Corrade/Utility/Debug.h>
namespace Magnum { namespace Audio { namespace Magnum { namespace Audio {
Debug& operator<<(Debug& debug, const Buffer::Format value) { Debug& operator<<(Debug& debug, const BufferFormat value) {
switch(value) { switch(value) {
/* LCOV_EXCL_START */ /* LCOV_EXCL_START */
#define _c(value) case Buffer::Format::value: return debug << "Audio::Buffer::Format::" #value; #define _c(value) case BufferFormat::value: return debug << "Audio::BufferFormat::" #value;
_c(Mono8) _c(Mono8)
_c(Mono16) _c(Mono16)
_c(Stereo8) _c(Stereo8)
@ -73,7 +73,7 @@ Debug& operator<<(Debug& debug, const Buffer::Format value) {
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
return debug << "Audio::Buffer::Format(" << Debug::nospace << reinterpret_cast<void*>(ALenum(value)) << Debug::nospace << ")"; return debug << "Audio::BufferFormat(" << Debug::nospace << reinterpret_cast<void*>(ALenum(value)) << Debug::nospace << ")";
} }
}} }}

199
src/Magnum/Audio/BufferFormat.h

@ -0,0 +1,199 @@
#ifndef Magnum_Audio_BufferFormat_h
#define Magnum_Audio_BufferFormat_h
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
/** @file
* @brief Enum @ref Magnum::Audio::BufferFormat
*/
#include <al.h>
#include "MagnumExternal/OpenAL/extensions.h"
#include "Magnum/Magnum.h"
#include "Magnum/Audio/visibility.h"
namespace Magnum { namespace Audio {
/**
@brief Buffer sample format
@note Multi-channel format is played without 3D spatialization (useful for
background music)
@see @ref Buffer::setData(), @ref AbstractImporter::format()
@m_enum_values_as_keywords
*/
enum class BufferFormat: ALenum {
Mono8 = AL_FORMAT_MONO8, /**< 8-bit unsigned mono */
Mono16 = AL_FORMAT_MONO16, /**< 16-bit signed mono */
Stereo8 = AL_FORMAT_STEREO8, /**< 8-bit interleaved unsigned stereo */
Stereo16 = AL_FORMAT_STEREO16, /**< 16-bit interleaved signed stereo */
/**
* 8-bit mono [A-Law Compressed Sound Format](https://en.wikipedia.org/wiki/A-law_algorithm)
* @requires_al_extension Extension @al_extension{EXT,ALAW}
*/
MonoALaw = AL_FORMAT_MONO_ALAW_EXT,
/**
* 8-bit interleaved stereo [A-Law Compressed Sound Format](https://en.wikipedia.org/wiki/A-law_algorithm)
* @requires_al_extension Extension @al_extension{EXT,ALAW}
*/
StereoALaw = AL_FORMAT_STEREO_ALAW_EXT,
/**
* 8-bit mono [μ-Law Compressed Sound Format](https://en.wikipedia.org/wiki/Μ-law_algorithm)
* @requires_al_extension Extension @al_extension{EXT,MULAW}
*/
MonoMuLaw = AL_FORMAT_MONO_MULAW_EXT,
/**
* 8-bit interleaved [μ-Law Compressed Sound Format](https://en.wikipedia.org/wiki/Μ-law_algorithm)
* @requires_al_extension Extension @al_extension{EXT,MULAW}
*/
StereoMuLaw = AL_FORMAT_STEREO_MULAW_EXT,
/**
* 32-bit floating-point mono
* @requires_al_extension Extension @al_extension{EXT,float32}
*/
MonoFloat = AL_FORMAT_MONO_FLOAT32,
/**
* 32-bit interleaved floating-point stereo
* @requires_al_extension Extension @al_extension{EXT,float32}
*/
StereoFloat = AL_FORMAT_STEREO_FLOAT32,
/**
* 64-bit floating-point mono
* @requires_al_extension Extension @al_extension{EXT,double}
*/
MonoDouble = AL_FORMAT_MONO_DOUBLE_EXT,
/**
* 64-bit interleaved floating-point stereo
* @requires_al_extension Extension @al_extension{EXT,double}
*/
StereoDouble = AL_FORMAT_STEREO_DOUBLE_EXT,
/**
* 8-bit unsigned quadrophonic
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Quad8 = AL_FORMAT_QUAD8,
/**
* 16-bit signed quadrophonic
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Quad16 = AL_FORMAT_QUAD16,
/**
* 32-bit interleaved floating-point quadrophonic
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Quad32 = AL_FORMAT_QUAD32,
/**
* 8-bit unsigned rear
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Rear8 = AL_FORMAT_REAR8,
/**
* 16-bit signed rear
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Rear16 = AL_FORMAT_REAR16,
/**
* 32-bit interleaved floating-point rear
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Rear32 = AL_FORMAT_REAR32,
/**
* 8-bit unsigned 5.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround51Channel8 = AL_FORMAT_51CHN8,
/**
* 16-bit signed 5.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround51Channel16 = AL_FORMAT_51CHN16,
/**
* 32-bit interleaved floating-point 5.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround51Channel32 = AL_FORMAT_51CHN32,
/**
* 8-bit unsigned 6.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround61Channel8 = AL_FORMAT_61CHN8,
/**
* 16-bit signed 6.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround61Channel16 = AL_FORMAT_61CHN16,
/**
* 32-bit interleaved floating-point 6.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround61Channel32 = AL_FORMAT_61CHN32,
/**
* 8-bit unsigned 7.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround71Channel8 = AL_FORMAT_71CHN8,
/**
* 16-bit signed 7.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround71Channel16 = AL_FORMAT_71CHN16,
/**
* 32-bit interleaved floating-point 7.1 surround
* @requires_al_extension Extension @al_extension{EXT,MCFORMATS}
*/
Surround71Channel32 = AL_FORMAT_71CHN32
};
/** @debugoperatorenum{BufferFormat} */
MAGNUM_AUDIO_EXPORT Debug& operator<<(Debug& debug, BufferFormat value);
}}
#endif

3
src/Magnum/Audio/CMakeLists.txt

@ -29,7 +29,7 @@ find_package(OpenAL REQUIRED)
set(MagnumAudio_SRCS set(MagnumAudio_SRCS
AbstractImporter.cpp AbstractImporter.cpp
Audio.cpp Audio.cpp
Buffer.cpp BufferFormat.cpp
Context.cpp Context.cpp
Renderer.cpp Renderer.cpp
Source.cpp) Source.cpp)
@ -38,6 +38,7 @@ set(MagnumAudio_HEADERS
AbstractImporter.h AbstractImporter.h
Audio.h Audio.h
Buffer.h Buffer.h
BufferFormat.h
Context.h Context.h
Extensions.h Extensions.h
Renderer.h Renderer.h

2
src/Magnum/Audio/Test/AbstractImporterTest.cpp

@ -57,7 +57,7 @@ void AbstractImporterTest::openFile() {
opened = (data.size() == 1 && data[0] == '\xa5'); opened = (data.size() == 1 && data[0] == '\xa5');
} }
Buffer::Format doFormat() const override { return {}; } BufferFormat doFormat() const override { return {}; }
UnsignedInt doFrequency() const override { return {}; } UnsignedInt doFrequency() const override { return {}; }
Corrade::Containers::Array<char> doData() override { return nullptr; } Corrade::Containers::Array<char> doData() override { return nullptr; }

18
src/Magnum/Audio/Test/BufferTest.cpp → src/Magnum/Audio/Test/BufferFormatTest.cpp

@ -26,26 +26,26 @@
#include <sstream> #include <sstream>
#include <Corrade/TestSuite/Tester.h> #include <Corrade/TestSuite/Tester.h>
#include "Magnum/Audio/Buffer.h" #include "Magnum/Audio/BufferFormat.h"
namespace Magnum { namespace Audio { namespace Test { namespace Magnum { namespace Audio { namespace Test {
struct BufferTest: TestSuite::Tester { struct BufferFormatTest: TestSuite::Tester {
explicit BufferTest(); explicit BufferFormatTest();
void debugFormat(); void debugFormat();
}; };
BufferTest::BufferTest() { BufferFormatTest::BufferFormatTest() {
addTests({&BufferTest::debugFormat}); addTests({&BufferFormatTest::debugFormat});
} }
void BufferTest::debugFormat() { void BufferFormatTest::debugFormat() {
std::ostringstream out; std::ostringstream out;
Debug(&out) << Buffer::Format::Stereo16 << Buffer::Format(0xdead); Debug(&out) << BufferFormat::Stereo16 << BufferFormat(0xdead);
CORRADE_COMPARE(out.str(), "Audio::Buffer::Format::Stereo16 Audio::Buffer::Format(0xdead)\n"); CORRADE_COMPARE(out.str(), "Audio::BufferFormat::Stereo16 Audio::BufferFormat(0xdead)\n");
} }
}}} }}}
CORRADE_TEST_MAIN(Magnum::Audio::Test::BufferTest) CORRADE_TEST_MAIN(Magnum::Audio::Test::BufferFormatTest)

4
src/Magnum/Audio/Test/CMakeLists.txt

@ -37,14 +37,14 @@ corrade_add_test(AudioAbstractImporterTest AbstractImporterTest.cpp
LIBRARIES MagnumAudio LIBRARIES MagnumAudio
FILES file.bin) FILES file.bin)
target_include_directories(AudioAbstractImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(AudioAbstractImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
corrade_add_test(AudioBufferTest BufferTest.cpp LIBRARIES MagnumAudio) corrade_add_test(AudioBufferFormatTest BufferFormatTest.cpp LIBRARIES MagnumAudio)
corrade_add_test(AudioContextTest ContextTest.cpp LIBRARIES MagnumAudio) corrade_add_test(AudioContextTest ContextTest.cpp LIBRARIES MagnumAudio)
corrade_add_test(AudioRendererTest RendererTest.cpp LIBRARIES MagnumAudio) corrade_add_test(AudioRendererTest RendererTest.cpp LIBRARIES MagnumAudio)
corrade_add_test(AudioSourceTest SourceTest.cpp LIBRARIES MagnumAudio) corrade_add_test(AudioSourceTest SourceTest.cpp LIBRARIES MagnumAudio)
set_target_properties( set_target_properties(
AudioAbstractImporterTest AudioAbstractImporterTest
AudioBufferTest AudioBufferFormatTest
AudioContextTest AudioContextTest
AudioRendererTest AudioRendererTest
AudioSourceTest AudioSourceTest

2
src/MagnumPlugins/AnyAudioImporter/AnyImporter.cpp

@ -75,7 +75,7 @@ void AnyImporter::doOpenFile(const std::string& filename) {
_in = std::move(importer); _in = std::move(importer);
} }
Buffer::Format AnyImporter::doFormat() const { return _in->format(); } BufferFormat AnyImporter::doFormat() const { return _in->format(); }
UnsignedInt AnyImporter::doFrequency() const { return _in->frequency(); } UnsignedInt AnyImporter::doFrequency() const { return _in->frequency(); }

2
src/MagnumPlugins/AnyAudioImporter/AnyImporter.h

@ -92,7 +92,7 @@ class MAGNUM_ANYAUDIOIMPORTER_EXPORT AnyImporter: public AbstractImporter {
MAGNUM_ANYAUDIOIMPORTER_LOCAL void doClose() override; MAGNUM_ANYAUDIOIMPORTER_LOCAL void doClose() override;
MAGNUM_ANYAUDIOIMPORTER_LOCAL void doOpenFile(const std::string& filename) override; MAGNUM_ANYAUDIOIMPORTER_LOCAL void doOpenFile(const std::string& filename) override;
MAGNUM_ANYAUDIOIMPORTER_LOCAL Buffer::Format doFormat() const override; MAGNUM_ANYAUDIOIMPORTER_LOCAL BufferFormat doFormat() const override;
MAGNUM_ANYAUDIOIMPORTER_LOCAL UnsignedInt doFrequency() const override; MAGNUM_ANYAUDIOIMPORTER_LOCAL UnsignedInt doFrequency() const override;
MAGNUM_ANYAUDIOIMPORTER_LOCAL Containers::Array<char> doData() override; MAGNUM_ANYAUDIOIMPORTER_LOCAL Containers::Array<char> doData() override;

2
src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp

@ -68,7 +68,7 @@ void AnyImporterTest::wav() {
CORRADE_VERIFY(importer->openFile(WAV_FILE)); CORRADE_VERIFY(importer->openFile(WAV_FILE));
/* Check only parameters, as it is good enough proof that it is working */ /* Check only parameters, as it is good enough proof that it is working */
CORRADE_COMPARE(importer->format(), Buffer::Format::Stereo8); CORRADE_COMPARE(importer->format(), BufferFormat::Stereo8);
CORRADE_COMPARE(importer->frequency(), 96000); CORRADE_COMPARE(importer->frequency(), 96000);
} }

26
src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp

@ -184,7 +184,7 @@ void WavImporterTest::invalidFactChunk() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "invalidFactChunk.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "invalidFactChunk.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::Mono16); CORRADE_COMPARE(importer->format(), BufferFormat::Mono16);
CORRADE_COMPARE(importer->frequency(), 22050); CORRADE_COMPARE(importer->frequency(), 22050);
CORRADE_COMPARE(importer->data().size(), 3724); CORRADE_COMPARE(importer->data().size(), 3724);
@ -207,7 +207,7 @@ void WavImporterTest::mono8() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono8.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono8.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::Mono8); CORRADE_COMPARE(importer->format(), BufferFormat::Mono8);
CORRADE_COMPARE(importer->frequency(), 22050); CORRADE_COMPARE(importer->frequency(), 22050);
CORRADE_COMPARE(importer->data().size(), 2136); CORRADE_COMPARE(importer->data().size(), 2136);
@ -220,7 +220,7 @@ void WavImporterTest::mono8junk() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono8junk.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono8junk.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::Mono8); CORRADE_COMPARE(importer->format(), BufferFormat::Mono8);
CORRADE_COMPARE(importer->frequency(), 22050); CORRADE_COMPARE(importer->frequency(), 22050);
CORRADE_COMPARE_AS(importer->data().prefix(4), CORRADE_COMPARE_AS(importer->data().prefix(4),
@ -232,7 +232,7 @@ void WavImporterTest::mono8ALaw() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono8ALaw.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono8ALaw.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::MonoALaw); CORRADE_COMPARE(importer->format(), BufferFormat::MonoALaw);
CORRADE_COMPARE(importer->frequency(), 8000); CORRADE_COMPARE(importer->frequency(), 8000);
CORRADE_COMPARE(importer->data().size(), 4096); CORRADE_COMPARE(importer->data().size(), 4096);
@ -246,7 +246,7 @@ void WavImporterTest::mono8MuLaw() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono8MuLaw.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono8MuLaw.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::MonoMuLaw); CORRADE_COMPARE(importer->format(), BufferFormat::MonoMuLaw);
CORRADE_COMPARE(importer->frequency(), 8000); CORRADE_COMPARE(importer->frequency(), 8000);
CORRADE_COMPARE(importer->data().size(), 4096); CORRADE_COMPARE(importer->data().size(), 4096);
@ -260,7 +260,7 @@ void WavImporterTest::mono16() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono16.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono16.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::Mono16); CORRADE_COMPARE(importer->format(), BufferFormat::Mono16);
CORRADE_COMPARE(importer->frequency(), 44000); CORRADE_COMPARE(importer->frequency(), 44000);
CORRADE_COMPARE_AS(importer->data(), CORRADE_COMPARE_AS(importer->data(),
@ -282,7 +282,7 @@ void WavImporterTest::stereo8() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo8.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo8.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::Stereo8); CORRADE_COMPARE(importer->format(), BufferFormat::Stereo8);
CORRADE_COMPARE(importer->frequency(), 96000); CORRADE_COMPARE(importer->frequency(), 96000);
CORRADE_COMPARE_AS(importer->data(), CORRADE_COMPARE_AS(importer->data(),
@ -295,7 +295,7 @@ void WavImporterTest::stereo8ALaw() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo8ALaw.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo8ALaw.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::StereoALaw); CORRADE_COMPARE(importer->format(), BufferFormat::StereoALaw);
CORRADE_COMPARE(importer->frequency(), 8000); CORRADE_COMPARE(importer->frequency(), 8000);
CORRADE_COMPARE(importer->data().size(), 4096); CORRADE_COMPARE(importer->data().size(), 4096);
@ -309,7 +309,7 @@ void WavImporterTest::stereo8MuLaw() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo8MuLaw.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo8MuLaw.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::StereoMuLaw); CORRADE_COMPARE(importer->format(), BufferFormat::StereoMuLaw);
CORRADE_COMPARE(importer->frequency(), 8000); CORRADE_COMPARE(importer->frequency(), 8000);
CORRADE_COMPARE(importer->data().size(), 4096); CORRADE_COMPARE(importer->data().size(), 4096);
@ -332,7 +332,7 @@ void WavImporterTest::stereo16() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo16.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo16.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::Stereo16); CORRADE_COMPARE(importer->format(), BufferFormat::Stereo16);
CORRADE_COMPARE(importer->frequency(), 44100); CORRADE_COMPARE(importer->frequency(), 44100);
CORRADE_COMPARE_AS(importer->data(), CORRADE_COMPARE_AS(importer->data(),
@ -362,7 +362,7 @@ void WavImporterTest::mono32f() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono32f.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono32f.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::MonoFloat); CORRADE_COMPARE(importer->format(), BufferFormat::MonoFloat);
CORRADE_COMPARE(importer->frequency(), 48000); CORRADE_COMPARE(importer->frequency(), 48000);
CORRADE_COMPARE(importer->data().size(), 3920); CORRADE_COMPARE(importer->data().size(), 3920);
@ -376,7 +376,7 @@ void WavImporterTest::stereo32f() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo32f.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo32f.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::StereoFloat); CORRADE_COMPARE(importer->format(), BufferFormat::StereoFloat);
CORRADE_COMPARE(importer->frequency(), 44100); CORRADE_COMPARE(importer->frequency(), 44100);
CORRADE_COMPARE(importer->data().size(), 1352); CORRADE_COMPARE(importer->data().size(), 1352);
@ -390,7 +390,7 @@ void WavImporterTest::stereo64f() {
std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter"); std::unique_ptr<AbstractImporter> importer = _manager.instantiate("WavAudioImporter");
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo64f.wav"))); CORRADE_VERIFY(importer->openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo64f.wav")));
CORRADE_COMPARE(importer->format(), Buffer::Format::StereoDouble); CORRADE_COMPARE(importer->format(), BufferFormat::StereoDouble);
CORRADE_COMPARE(importer->frequency(), 8000); CORRADE_COMPARE(importer->frequency(), 8000);
CORRADE_COMPARE(importer->data().size(), 375888); CORRADE_COMPARE(importer->data().size(), 375888);

26
src/MagnumPlugins/WavAudioImporter/WavImporter.cpp

@ -128,13 +128,13 @@ void WavImporter::doOpenData(Containers::ArrayView<const char> data) {
if(formatChunk->audioFormat == WavAudioFormat::Pcm) { if(formatChunk->audioFormat == WavAudioFormat::Pcm) {
/* Decide about format */ /* Decide about format */
if(formatChunk->numChannels == 1 && formatChunk->bitsPerSample == 8) if(formatChunk->numChannels == 1 && formatChunk->bitsPerSample == 8)
_format = Buffer::Format::Mono8; _format = BufferFormat::Mono8;
else if(formatChunk->numChannels == 1 && formatChunk->bitsPerSample == 16) else if(formatChunk->numChannels == 1 && formatChunk->bitsPerSample == 16)
_format = Buffer::Format::Mono16; _format = BufferFormat::Mono16;
else if(formatChunk->numChannels == 2 && formatChunk->bitsPerSample == 8) else if(formatChunk->numChannels == 2 && formatChunk->bitsPerSample == 8)
_format = Buffer::Format::Stereo8; _format = BufferFormat::Stereo8;
else if(formatChunk->numChannels == 2 && formatChunk->bitsPerSample == 16) else if(formatChunk->numChannels == 2 && formatChunk->bitsPerSample == 16)
_format = Buffer::Format::Stereo16; _format = BufferFormat::Stereo16;
else { else {
Error() << "Audio::WavImporter::openData(): PCM with unsupported channel count" Error() << "Audio::WavImporter::openData(): PCM with unsupported channel count"
<< formatChunk->numChannels << "with" << formatChunk->bitsPerSample << formatChunk->numChannels << "with" << formatChunk->bitsPerSample
@ -145,13 +145,13 @@ void WavImporter::doOpenData(Containers::ArrayView<const char> data) {
/* Check IEEE Float format */ /* Check IEEE Float format */
} else if(formatChunk->audioFormat == WavAudioFormat::IeeeFloat) { } else if(formatChunk->audioFormat == WavAudioFormat::IeeeFloat) {
if(formatChunk->numChannels == 1 && formatChunk->bitsPerSample == 32) if(formatChunk->numChannels == 1 && formatChunk->bitsPerSample == 32)
_format = Buffer::Format::MonoFloat; _format = BufferFormat::MonoFloat;
else if(formatChunk->numChannels == 2 && formatChunk->bitsPerSample == 32) else if(formatChunk->numChannels == 2 && formatChunk->bitsPerSample == 32)
_format = Buffer::Format::StereoFloat; _format = BufferFormat::StereoFloat;
else if(formatChunk->numChannels == 1 && formatChunk->bitsPerSample == 64) else if(formatChunk->numChannels == 1 && formatChunk->bitsPerSample == 64)
_format = Buffer::Format::MonoDouble; _format = BufferFormat::MonoDouble;
else if(formatChunk->numChannels == 2 && formatChunk->bitsPerSample == 64) else if(formatChunk->numChannels == 2 && formatChunk->bitsPerSample == 64)
_format = Buffer::Format::StereoDouble; _format = BufferFormat::StereoDouble;
else { else {
Error() << "Audio::WavImporter::openData(): IEEE with unsupported channel count" Error() << "Audio::WavImporter::openData(): IEEE with unsupported channel count"
<< formatChunk->numChannels << "with" << formatChunk->bitsPerSample << formatChunk->numChannels << "with" << formatChunk->bitsPerSample
@ -162,9 +162,9 @@ void WavImporter::doOpenData(Containers::ArrayView<const char> data) {
/* Check A-Law format */ /* Check A-Law format */
} else if(formatChunk->audioFormat == WavAudioFormat::ALaw) { } else if(formatChunk->audioFormat == WavAudioFormat::ALaw) {
if(formatChunk->numChannels == 1) if(formatChunk->numChannels == 1)
_format = Buffer::Format::MonoALaw; _format = BufferFormat::MonoALaw;
else if(formatChunk->numChannels == 2) else if(formatChunk->numChannels == 2)
_format = Buffer::Format::StereoALaw; _format = BufferFormat::StereoALaw;
else { else {
Error() << "Audio::WavImporter::openData(): ALaw with unsupported channel count" Error() << "Audio::WavImporter::openData(): ALaw with unsupported channel count"
<< formatChunk->numChannels << "with" << formatChunk->bitsPerSample << formatChunk->numChannels << "with" << formatChunk->bitsPerSample
@ -175,9 +175,9 @@ void WavImporter::doOpenData(Containers::ArrayView<const char> data) {
/* Check μ-Law format */ /* Check μ-Law format */
} else if(formatChunk->audioFormat == WavAudioFormat::MuLaw) { } else if(formatChunk->audioFormat == WavAudioFormat::MuLaw) {
if(formatChunk->numChannels == 1) if(formatChunk->numChannels == 1)
_format = Buffer::Format::MonoMuLaw; _format = BufferFormat::MonoMuLaw;
else if(formatChunk->numChannels == 2) else if(formatChunk->numChannels == 2)
_format = Buffer::Format::StereoMuLaw; _format = BufferFormat::StereoMuLaw;
else { else {
Error() << "Audio::WavImporter::openData(): MuLaw with unsupported channel count" Error() << "Audio::WavImporter::openData(): MuLaw with unsupported channel count"
<< formatChunk->numChannels << "with" << formatChunk->bitsPerSample << formatChunk->numChannels << "with" << formatChunk->bitsPerSample
@ -219,7 +219,7 @@ void WavImporter::doOpenData(Containers::ArrayView<const char> data) {
void WavImporter::doClose() { _data = nullptr; } void WavImporter::doClose() { _data = nullptr; }
Buffer::Format WavImporter::doFormat() const { return _format; } BufferFormat WavImporter::doFormat() const { return _format; }
UnsignedInt WavImporter::doFrequency() const { return _frequency; } UnsignedInt WavImporter::doFrequency() const { return _frequency; }

20
src/MagnumPlugins/WavAudioImporter/WavImporter.h

@ -59,12 +59,16 @@ namespace Magnum { namespace Audio {
Supports mono and stereo files of the following formats: Supports mono and stereo files of the following formats:
- 8 bit per channel PCM, imported as @ref Buffer::Format::Mono8 and @ref Buffer::Format::Stereo8 - 8 bit per channel PCM, imported as @ref BufferFormat::Mono8 and
- 16 bit per channel PCM, imported as @ref Buffer::Format::Mono16 and @ref Buffer::Format::Stereo16 @ref BufferFormat::Stereo8
- 32-bit IEEE Float, imported as @ref Buffer::Format::MonoFloat / @ref Buffer::Format::StereoFloat - 16 bit per channel PCM, imported as @ref BufferFormat::Mono16 and
- 64-bit IEEE Float, imported as @ref Buffer::Format::MonoDouble / @ref Buffer::Format::StereoDouble @ref BufferFormat::Stereo16
- A-Law, imported as @ref Buffer::Format::MonoALaw / @ref Buffer::Format::StereoALaw - 32-bit IEEE Float, imported as @ref BufferFormat::MonoFloat /
- μ-Law, imported as @ref Buffer::Format::MonoMuLaw / @ref Buffer::Format::StereoMuLaw @ref BufferFormat::StereoFloat
- 64-bit IEEE Float, imported as @ref BufferFormat::MonoDouble /
@ref BufferFormat::StereoDouble
- A-Law, imported as @ref BufferFormat::MonoALaw / @ref BufferFormat::StereoALaw
- μ-Law, imported as @ref BufferFormat::MonoMuLaw / @ref BufferFormat::StereoMuLaw
This plugin is built if `WITH_WAVAUDIOIMPORTER` is enabled when building This plugin is built if `WITH_WAVAUDIOIMPORTER` is enabled when building
Magnum. To use dynamic plugin, you need to load the @cpp "WavAudioImporter" @ce Magnum. To use dynamic plugin, you need to load the @cpp "WavAudioImporter" @ce
@ -92,12 +96,12 @@ class MAGNUM_WAVAUDIOIMPORTER_EXPORT WavImporter: public AbstractImporter {
MAGNUM_WAVAUDIOIMPORTER_LOCAL void doOpenData(Containers::ArrayView<const char> data) override; MAGNUM_WAVAUDIOIMPORTER_LOCAL void doOpenData(Containers::ArrayView<const char> data) override;
MAGNUM_WAVAUDIOIMPORTER_LOCAL void doClose() override; MAGNUM_WAVAUDIOIMPORTER_LOCAL void doClose() override;
MAGNUM_WAVAUDIOIMPORTER_LOCAL Buffer::Format doFormat() const override; MAGNUM_WAVAUDIOIMPORTER_LOCAL BufferFormat doFormat() const override;
MAGNUM_WAVAUDIOIMPORTER_LOCAL UnsignedInt doFrequency() const override; MAGNUM_WAVAUDIOIMPORTER_LOCAL UnsignedInt doFrequency() const override;
MAGNUM_WAVAUDIOIMPORTER_LOCAL Containers::Array<char> doData() override; MAGNUM_WAVAUDIOIMPORTER_LOCAL Containers::Array<char> doData() override;
Containers::Array<char> _data; Containers::Array<char> _data;
Buffer::Format _format; BufferFormat _format;
UnsignedInt _frequency; UnsignedInt _frequency;
}; };

Loading…
Cancel
Save