Bug#337804: Doesn't use CPU runtime detection in libpostproc

Sebastian Dröge slomo at slomosnail.de
Sun Nov 6 16:32:07 UTC 2005


Package: gst-ffmpeg
Version: 0.8.7-2
Severity: important

Hi,
currently gst-ffmpeg is compiled without CPU runtime detection and uses
for example altivec on all powerpc cpus, whether there is altivec or
not.

I would add -DRUNTIME_CPUDETECT to the CFLAGS for every arch to fix
this. Works and compiles fine here on a G4

btw, the -maltivec should be fine, no matter what I've told on IRC. It
only enables the usage altivec instructions, nothing else...

Below is the IRC log copied where we were talking about this


<slomo_> lool: btw, you're enabling altivec on ppc... doesn't this
prevent gst-ffmpeg from working on g3 or other non-altivec ppc?
<lool> slomo_: I think it's detected at runtime too
<slomo_> lool: hm, sounds like this... "fixes altivec detection so it
runs on G3 CPUs, also"
<lool> slomo_: pleas rephrase your question, I don't understand it
--> JHM (ray at node-072-048.dsl.active24.nl) has joined #gnome-debian
<slomo_> currently gst-ffmpeg is compiled with altivec support on ppc...
and you add -maltivec to the CFLAGS for ppc... but afaik a ffmpeg
doesn't have runtime detection code for this and -maltivec will make the
binaries incompatible with non-altivec cpus...
<slomo_> but i'm not sure... i'll take a further look
<slomo_> lool: yes, seems like it for -maltivec...
http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/RS_002f6000-and-PowerPC-Options.html#index-maltivec-1293
<slomo_> lool: also the configure test in the ffmpeg source tree will
fail when running on a g3 which will result in disabled altivec support
<lool> slomo_: using -maltivec shouldn't be enough to generate altivec
code
<lool> slomo_: AFAIK, it only allows usage of altivec
<lool> slomo_: debian packages are built on altivec machines
<lool> slomo_: and the generated ffmpeg code should have altivec code,
with a runtime check to use it, or to use the non-altivec alternative
<slomo_> lool: ok if that's the case it's fine... i'll take a deeper
look at the ffmpeg sources... 
<lool> slomo_: let me know if one of the statements I just made aren't
true, that would be an important or serious bug
<slomo_> lool: sure... i'm looking at this because someone joined a
ubuntu channel, said that it doesn't work on his G3 because of illegal
instruction and leaved instantly ;)
<lool> it might not build, but it should work
<slomo_> hm, from my understanding libavcodec should be fine but
libpostproc isn't... it only uses runtime cpu detection when
RUNTIME_CPUDETECT is defined
<slomo_> and this isn't defined by any configure switch or something
<slomo_> libpostproc uses only altivec (or MMX, SSE, whatever) code when
this is not defined and provides no fallback when it isn't there
<lool> that's bad news, what ffmpeg source did you look at?
gst-ffmpeg's?
<slomo_> yes
<slomo_> for example look at postprocess.c... there's a big #ifdef block
with RUNTIME_CPUDETECT
<slomo_> but RUNTIME_CPUDETECT isn't defined somewhere
<lool> slomo_: could you please file a bug with severity important
against gst-ffmpeg so that I can check later?






More information about the Pkg-gstreamer-maintainers mailing list