FFmpeg audio decoding to PCM

With that feature, BubbleUPnP can play to renderers music in formats they do not natively support. It also makes special processing such as ReplayGain possible. It only applies to standalone audio (music tracks, podcasts, audio books, ...), not to audio in videos.

If a renderer claims to not support an audio codec and/or format, BubbleUPnP can decode audio to PCM (using FFmpeg) and serve either a WAV or LPCM stream to the renderer. The vast majority of renderers either support one or the other (or both), which makes it virtually possible to play any audio to any renderer (barring rare renderers incompatbilities). Since audio is just decoded to PCM and there is no recompression to a lossy format, there is no loss of audio quality (if you exclude possible resampling and bitdepth reduction).

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 and to take benefit from the eventual wired network connection of BubbleUPnP Server. 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.

FFmpeg audio decoding

Select when FFmpeg audio decoding must be performed. The default is to only do it for audio that cannot be played natively by the renderer. Other choices are to disable it entirely or to enable it for all audio.

If you disable it entirely, playing an unsupported audio format will result in an error message if 'Mime-type check' is enabled, or if that setting is disabled, BubbleUPnP will blindly instructs the renderer to play the stream and it will probably not play.

If FFmpeg audio decoding is not entirely disabled, other settings on that page can force FFmpeg decoding to enforce their constraints (see below).

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

'FFmpeg: Format (WAV or LPCM) | samplerate | bitdepth (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.

Audio format

This is the format container that will be used to stream decoded audio to the renderer. 'Auto' chooses automatically depending on input audio and renderer capabilities. It's the default and recommended to leave as is unless it does not work. Other choices are 'WAV' and 'LPCM', with an indication on whether the renderer claims to support each one or not.

Max supported samplerate

This is the max supported samplerate supported by the renderer for playing WAV and/or LPCM. This setting will force FFmpeg decoding whenever the samplerate of the playing track is higher than the max samplerate.

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)

Downmix multi-channel to stereo

Converts multi-channel audio to stereo. 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. If enabled, this will force FFmpeg audio decoding for any track whose audio is 24 bit.