Thirdparty libraries

How to disable specific decoders

Now you can configure which decoder do you want to include for each platform. This process requires to configure and recompile the plugin for each platform that you want to support.
To automate the process we can include the plugin inside our UE4 project folder, and compile the plugin with our project.
So the first step is to download the plugin from the Marketplace.
doc_thirdparty_plugin_content
Now we can copy
- Resources
- Source
- Thirdparty
- ParallelcubeAudioAnalyzer.uplugin
to our Project folder
We need to create a /Plugin/Marketplace/AudioAnalyzer/ folder in our project and paste the previous content of the plugin
doc_thirdparty_plugin_project
We have edit two files to configure the plugin.
The first one disable the code related to the decoder and it is located on:

Warning

Source/AudioAnalyzer/Private/AudioAnalyzerConfig.h

Search the platform to configure and disable or enable the decoder changing the value of the macro by 0 or 1
doc_thirdparty_disable_code

How to disable MP3 library code for Windows Platform

The second one is to avoid to include the library binary in the packaged project and it is located on:

Warning

Source/AudioAnalyzer/ParallelcubeAudioAnalyzer.Build.cs

We can’t set a Macro value in C# so to disable the library we need to comment the macro definition using a doble slash
doc_thirdparty_disable_binary

How to disable MP3 library binary for Windows Platform

Now we can open our project.
A dialog is showing up to request the build of the plugin for the editor.
doc_thirdparty_plugin_build_editor
If all goes well, this process will generate the binaries used by the editor when the project is opened
We can see a new folder in the plugin path that contain this binaries
doc_thirdparty_plugin_editor_lib
and finally our project is ready to the development with a custom version of the AudioAnalyzer plugin

Note

If you want to change the plugin configuration again you need to delete the Binaries folder of the Plugin ot force the compilation

If we build our project for the platform we can see that the folder of the disabled libraries not appear in the packaged files
doc_thirdparty_pack_pefore

Windows Project packaged with MP3 decoder library

doc_thirdparty_pack_after

Windows Project packaged without MP3 decoder library

Included libraries

Simple DirectMedia Layer 2

Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve’s award winning catalog and many Humble Bundle games.

SDL officially supports Windows, Mac OS X, Linux, iOS, and Android. Support for other platforms may be found in the source code.
SDL is written in C, works natively with C++, and there are bindings available for several other languages, including C# and Python.
SDL 2.0 is distributed under the zlib license. This license allows you to use SDL freely in any software.
Current version v2.0.9

Kiss FFT

A Fast Fourier Transform based up on the principle, “Keep It Simple, Stupid.” Kiss FFT is a very small, reasonably efficient, mixed radix FFT library that can use either fixed or floating point data types.

Kiss FFT is:
small
no frills (just like this page)
able to do fixed or floating point with just a recompile
efficient enough for all but the most demanding applications
distributed with an easy-going license (BSD)
Current version v130

MPG123

The mpg123 distribution contains a real time MPEG 1.0/2.0/2.5 audio player/decoder for layers 1,2 and 3 (most commonly MPEG 1.0 layer 3 aka MP3), as well as re-usable decoding and output libraries.

Among others, it works on GNU/Linux, MacOSX, the BSDs, Solaris, AIX, HPUX, SGI Irix, OS/2 and Cygwin or plain MS Windows (not all more exotic platforms tested regularily, but patches welcome).

Current version v1.25.10

OGG

Ogg is a multimedia container format, and the native file and stream format for the Xiph.org multimedia codecs. As with all Xiph.org technology is it an open format free for anyone to use.

As with most container formats it encapsulates raw compressed data and allows the interleaving of audio and video data inside a single convenient format. Other examples of container formats are Quicktime .mov, the MPEG program stream, and AVI.

In addition to encapsulation and interleave of multiple data streams, Ogg provides packet framing, error detection, and periodic timestamps for seeking, and in a small, bounded percentage bitrate overhead.

Ogg is a stream oriented container, meaning it can be written and read in one pass, making it a natural fit for internet streaming and use in processing pipelines. This stream orientation is the major design difference over other file-based container formats.

Current version v1.3.3

VORBIS

Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format for mid to high quality (8kHz-48.0kHz, 16+ bit, polyphonic) audio and music at fixed and variable bitrates from 16 to 128 kbps/channel. This places Vorbis in the same competitive class as audio representations such as MPEG-4 (AAC), and similar to, but higher performance than MPEG-1/2 audio layer 3, MPEG-4 audio (TwinVQ), WMA and PAC.

The bitstream format for Vorbis I was frozen Monday, May 8th 2000. All bitstreams encoded since will remain compatible with all future releases of Vorbis.

Current version v1.3.6

FLAC

FLAC stands for Free Lossless Audio Codec, an audio format similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality. This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio, and you can play back compressed FLAC files in your favorite player (or your car or home stereo, see supported devices) just like you would an MP3 file.

FLAC stands out as the fastest and most widely supported lossless audio codec, and the only one that at once is non-proprietary, is unencumbered by patents, has an open-source reference implementation, has a well documented format and API, and has several other independent implementations.

Current version v1.3.2