When a52dec is emerged with the djbfft USE flag then it is able to do optimised FFTs using the djbfft library. This is activated by setting the MM_ACCEL_DJBFFT flag when calling a52_init. The problem is that the internal version of a52dec in xine-lib is an older version which used the Solaris-specific mlib for FFT acceleration. MM_ACCEL_DJBFFT and MM_ACCEL_MLIB are defined to be the same value (0x00000001).
The attached patch adds an --enable-djbfft flag to configure.ac which is only checked when xine-lib wants to use an external version of a52dec. If set, then MM_ACCEL_MLIB is added to the flags which is equivalent to passing MM_ACCEL_DJBFFT to an external a52dec. The attached ebuild adds support for the djbfft USE flag to xine-lib.
Steps to Reproduce:
1. Add djbfft and a52 to USE flags
2. emerge a52dec with djbfft library
3. emerge xine-ui with external a52 library
xine-lib displays "No accelerated IMDCT transform found" when playing back DVDs with A/52 audio.
xine-lib displays "Using djbfft for IMDCT transform" when playing back DVDs with A/52 audio.
Created attachment 120383 [details, diff]
Add --enable-djbfft to xine-lib configure script
Created attachment 120384 [details]
Add djbfft USE flag to xine-lib
This needs to go upstream, have you reported it?
Upstream rejects this patch, please find a different solution.
Upstream doesn't want the fix so I see 3 options:
1. Apply this patch as gentoo specific
2. Remove support for external liba52 from the xine-lib ebuild
3. Add a patch to the a52dec ebuild to always enable djbfft support if it was compiled in
Option 1 and 2 are completely unacceptable.
But I've fixed this properly in Mercurial code of xine-lib, to be released in 1.1.9 (which should be soon enough, as it's due before KDE4 gets released).
Marking this as UPSTREAM as the bug is resolved upstream.