[FFmpeg-devel] [FFmpeg-cvslog] r11100 - in trunk/libavcodec/i386: cavsdsp_mmx.c dsputil_mmx.c dsputil_mmx.h h264dsp_mmx.c mpegvideo_mmx.c vc1dsp_mmx.c

Loren Merritt lorenm
Sat Dec 1 01:56:07 CET 2007

On Fri, 30 Nov 2007, Uoti Urpala wrote:

> Would (3) or (4) actually fix compilation in this case? I think the
> addressing mode generated by the compiler causes the problems and AFAIK
> the linker wouldn't change that.

But this addressing is not generated by the compiler, hence the problem.

Static library: inline asm contains a textrel. ok.
Shared library: inline asm still contains a textrel. linker barfs because 
that's not PIC.
Shared library with -Bsymbolic: inline asm still contains a textrel. 
linker resolves the textrel when making the shared library, thus there 
are no textrels in the .so, so it's ok.

> Any linker stuff like (3) or (4) cannot give the full available speedup;
> for that the addressing mode needs to be known at compile time. As I
> wrote in another message the visibility should be marked in the headers
> with either a pragma changing default visibility or a per-symbol macro.
> Those produce identical results but differ in code maintenance
> qualities.

Benchmarks (of x264 not ffmpeg, but they should still be relevant):

x86_64 (Core2)
speed  exe size  version
-2.0%   698928   shared
-1.3%   693584   shared -Bsymbolic
-1.3%   673136   shared -fvisibility=hidden
-0.9%   673104   shared -Bsymbolic -fvisibility=hidden
+0      650208   static

x86_32 (Core2)
speed  exe size  version
-3.2%   736807   shared pic
-2.8%   732071   shared pic -Bsymbolic
-2.7%   715687   shared pic -fvisibility=hidden
-2.7%   715687   shared pic -Bsymbolic -fvisibility=hidden
+0      694232   shared non-pic
+0      660008   static

--Loren Merritt

More information about the ffmpeg-devel mailing list