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:
- Non natively supported formats: this is the default and FFMpeg will only decode non natively supported formats while Android native decoders manage the rest
- Non natively supported format + FLAC: as above but FFmpeg will decode FLAC as well. This option is useful in case the native FLAC decoder is buggy. This can happen on some Samsung devices and older Android versions.
This setting repaces 'Settings > Local Renderer > Use own FLAC decoder' which has been removed.
- Non natively supported format + SHOUTCast: Android natively supports playing SHOUTcast streams although its support is in variable state depending on Android versions. Notably, buffering of low bitrate (and even 128Kbps) streams is dead slow. Using FFMpeg fixes this, and make playback of SHOUTcast streams more consistent
- Non natively supported format + FLAC + SHOUTcast: combination of 2 settings above
- All audio formats: FFMpeg will decode all audio formats. This is useful in 2 cases: to workaround a native decoder issue (rare), or to enable features detailed below such as ReplayGain or resampling, to native formats such as MP3, AAC, etc
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.