Magnum::Audio::AbstractImporter class

Base for audio importer plugins.

Provides interface for importing various audio formats. See Loading and using plugins for more information and *Importer classes in Audio namespace for available importer plugins.

Data dependency

The data returned from various functions by design have no dependency on the importer instance and neither on the dynamic plugin module. In other words, you don't need to keep the importer instance (or the plugin manager instance) around in order to have the returned data valid. Moreover, all returned Corrade::Containers::Array instances are only allowed to have default deleters — this is to avoid potential dangling function pointer calls when destructing such instances after the plugin module has been unloaded.


Plugin implements function doFeatures(), doIsOpened(), one of or both doOpenData() and doOpenFile() functions, function doClose() and data access functions doFormat(), doFrequency() and doData().

You don't need to do most of the redundant sanity checks, these things are checked by the implementation:

  • Functions doOpenData() and doOpenFile() are called after the previous file was closed, function doClose() is called only if there is any file opened.
  • Function doOpenData() is called only if Feature::OpenData is supported.
  • All do*() implementations working on opened file are called only if there is any file opened.

Derived classes

class AnyImporter
Any audio importer plugin.
class DrFlacImporter
FLAC audio importer plugin using dr_flac.
class DrMp3Importer new in 2019.10
MP3 audio importer plugin using dr_mp3.
class DrWavImporter
WAV audio importer plugin using dr_wav.
class Faad2Importer
AAC audio importer plugin using FAAD2.
class StbVorbisImporter
OGG audio importer plugin using stb_vorbis.
class WavImporter
WAV importer plugin.

Public types

enum class Feature: UnsignedByte { OpenData = 1 << 0 }
Features supported by this importer.
using Features = Containers::EnumSet<Feature>
Features supported by this importer.

Public static functions

static auto pluginInterface() -> std::string
Plugin interface.
static auto pluginSearchPaths() -> std::vector<std::string>
Plugin search paths.

Constructors, destructors, conversion operators

AbstractImporter() explicit
Default constructor.
AbstractImporter(PluginManager::Manager<AbstractImporter>& manager) explicit
Constructor with access to plugin manager.
AbstractImporter(PluginManager::AbstractManager& manager, const std::string& plugin) explicit
Plugin manager constructor.

Public functions

auto features() const -> Features
Features supported by this importer.
auto isOpened() const -> bool
Whether any file is opened.
auto openData(Containers::ArrayView<const char> data) -> bool
Open raw data.
auto openFile(const std::string& filename) -> bool
Open file.
void close()
Close file.

Data access

auto format() const -> BufferFormat
Sample format.
auto frequency() const -> UnsignedInt
Sample frequency.
auto data() -> Containers::Array<char>
Sample data.
auto doFeatures() const -> Features private pure virtual
Implementation for features()
auto doIsOpened() const -> bool private pure virtual
Implementation for isOpened()
void doOpenData(Containers::ArrayView<const char> data) private virtual
Implementation for openData()
void doOpenFile(const std::string& filename) private virtual
Implementation for openFile()
void doClose() private pure virtual
Implementation for close()
auto doFormat() const -> BufferFormat private pure virtual
Implementation for format()
auto doFrequency() const -> UnsignedInt private pure virtual
Implementation for frequency()
auto doData() -> Containers::Array<char> private pure virtual
Implementation for data()

Enum documentation

enum class Magnum::Audio::AbstractImporter::Feature: UnsignedByte

Features supported by this importer.


Opening files from raw data using openData()

Typedef documentation

typedef Containers::EnumSet<Feature> Magnum::Audio::AbstractImporter::Features

Features supported by this importer.

Function documentation

static std::string Magnum::Audio::AbstractImporter::pluginInterface()

Plugin interface.


static std::vector<std::string> Magnum::Audio::AbstractImporter::pluginSearchPaths()

Plugin search paths.

First looks in magnum/audioimporters/ or magnum-d/audioimporters/ next to the executable (or, in case of Windows and a non-static build, next to the DLL of the Audio library) and as a fallback in magnum/audioimporters/ or magnum-d/audioimporters/ in the runtime install location (lib[64]/ on Unix-like systems, bin/ on Windows). The system-wide plugin search directory is configurable using the MAGNUM_PLUGINS_DIR CMake variables, see Downloading and building for more information.

Not defined on platforms without dynamic plugin support.

bool Magnum::Audio::AbstractImporter::openData(Containers::ArrayView<const char> data)

Open raw data.

Closes previous file, if it was opened, and tries to open given file. Available only if Feature::OpenData is supported. Returns true on success, false otherwise.

bool Magnum::Audio::AbstractImporter::openFile(const std::string& filename)

Open file.

Closes previous file, if it was opened, and tries to open given file. Returns true on success, false otherwise.

void Magnum::Audio::AbstractImporter::doOpenFile(const std::string& filename) virtual private

Implementation for openFile()

If Feature::OpenData is supported, default implementation opens the file and calls doOpenData() with its contents.

Debug& operator<<(Debug& debug, AbstractImporter::Feature value)

Debug output operator.

Debug& operator<<(Debug& debug, AbstractImporter::Features value)

Debug output operator.