FFmpeg audio decoding (for local playback)

That feature uses FFmpeg to add support for local playback of non natively supported Android audio formats: WMA, ALAC, AIFF, DSD, Opus, LPCM, Monkey's Audio, Musepack, WavPack and probably a few more.

It can also entirely replace Android stock codecs for natively supported formats (FLAC, WAV, MP3, AAC, Ogg Vorbis), to workaround bugs and/or perform special processing (ReplayGain).

FFMpeg audio decoding

Choose which audio will be decoded by FFmpeg, with the following choices:

FFmpeg audio decoding can be performed either by your Android device (the most common case) or offloaded to BubbleUPnP Server (version 0.9-update28+ required) if you have installed it and if it is detected running on your local network. Using BubbleUPnP Server has the advantage to reduce CPU usage of your Android device. If BubbleUPnP Server is used for that purpose, it will be indicated with its ip address. You can disable the automatic use of BubbleUPnP Server in Settings > UPnP Tweaks > BubbleUPnP Server FFmpeg decoding. Note that if you play locally audio managed by the 'Local and Cloud' library, FFmpeg decoding is always performed by this Android device (to avoid an unnecessary round-trip with BubbleUPnP Server).

When a track is playing locally and FFmpeg decoding is active for that track, it will be displayed in the Now Playing tab as:

'FFmpeg: Format (WAV or LPCM) | samplerate | bithdepth (16 or 24 bit) | channel count | ReplayGain'

If BubbleUPnP Server is used for decoding, it will be indicated as 'FFmpeg (remote)'.

The last ReplayGain field is only displayed if both the playing track has ReplayGain tags and ReplayGain processing is enabled. ReplayGain can be enabled in the 3-dot menu of the Now Playing tab.

Other settings below can force FFmpeg audio decoding to enforce their constraint.

Resample to native samplerate

Performs resampling to the native internal audio hardware samplerate (usually 48 kHz). Enabling this option bypasses the Android internal resampler with a better quality one. If enabled, this will force FFmpeg audio decoding for any track whose samplerate is different than the native samplerate. Do not use this when playing to an external USB DAC or to an Android device with an advanced internal DAC (such as LG's Quad DAC).

Resampling quality

Resampling quality to use whenever resampling is performed (using SoX). Either High Quality (SoX's default, precision=20) or Very High Quality (precision=28). Very High Quality uses more CPU.

Downmix multi-channel to stereo

Converts multi-channel audio to stereo. Enable it only if your Android device can do multichannel or if you can pass it to an external DAC. Otherwise Android will internally do the downmix anyway. If enabled, this will force FFmpeg audio decoding for any multi-channel track.

Convert 24 bit to 16 bit

Converts 24 bit audio to 16 bit. On most Android devices (maybe external DACs excepted), the system will do it internally anyway. Enable if you want FFmpeg to do it instead. If enabled, this will force FFmpeg audio decoding for any track whose audio is 24 bit.