xbmc/xbmc — pull request #2081 by popcornmix (2013-01-15 21:06:18+00:00)
Title: [rbp] Apply volume control at audio_mixer when possible

On Pi, the analogue audio has ~10 bits so it is important to make use of the full dynamic range.
Currently when downmixing from, say, 5.1 to stereo the "boost volume on downmix" is applied to mixer component. The volume is applied after this.
If you don't boost volume on downmix you reduce volume level, and so lose dynamic range.
If you do boost volume on downmix you risk clipping and distorting audio. The volume control happens too late to avoid this.

This patch applies the volume control to the downmix coefficient which allows "boost" to be enabled, and the volume to be adjusted to maximise range without clipping.

See https://github.com/huceke/omxplayer/pull/58 for original discussion for a similar patch to omxplayer. Thanks to torarin for original patch.