[Ffmpeg-devel] Bindings benchmark on visibility patch

Diego 'Flameeyes' Pettenò flameeyes
Fri Sep 22 21:00:40 CEST 2006


So, as people seems to want some concrete results produced by the visibility 
patches I'm working on, I drafted up a parser for the LD_DEBUG=bindings 
output, and counted the results (I'll make the script available in the next 
days, give me time to make it something les specific than what I've hacked up 
in 30 minutes of ruby hacking today).

The output comes out of a xine-ui playing an AVI with ISO MPEG-4 video stream, 
and MP3 audio stream (both decoded with FFmpeg plugin). xine-lib CVS HEAD 
with visibility enabled in that, too (and external FFmpeg from SVN of 
course).

Without visibility patch:

libavcodec required 625 symbols (591 in itself)
libavutil required 10 symbols (3 in itself)
libpostproc required 9 symbols (none in itself)

libavcodec resolved 702 symbols (591 from itself)
libavutil resolved 13 symbols (3 from itself)
libpostproc resolved 3 symbols (none from itself)

-rwxr-xr-x 1 root root 2605648 22 set 19:32 /usr/lib/libavcodec.so
-rwxr-xr-x 1 root root  438528 22 set 19:32 /usr/lib/libavformat.so
-rwxr-xr-x 1 root root   17576 22 set 19:32 /usr/lib/libavutil.so
-rwxr-xr-x 1 root root   32368 22 set 19:32 /usr/lib/libpostproc.so

With visibility patch:

libavcodec required 105 symbols (71 in itself)
libavutil required 7 symbols (none in itself)
libpostproc required 10 symbols (none in itself)

libavcodec resolved 182 symbols (71 from itself)
libavutil resolved 10 symbols (none from itself)
libpostproc resolved 5 symbols (none from itself)

-rwxr-xr-x 1 root root 2558832 22 set 20:56 /usr/lib/libavcodec.so
-rwxr-xr-x 1 root root  426240 22 set 20:56 /usr/lib/libavformat.so
-rwxr-xr-x 1 root root   16984 22 set 20:56 /usr/lib/libavutil.so
-rwxr-xr-x 1 root root   32368 22 set 20:56 /usr/lib/libpostproc.so

I'm not sure why libpostproc required different amount of symbols, different 
runs gives me values between 3 and 6, probably depends by which postproc xine 
is trying to do depending on system load. The numbers for libavutil and 
libavcodec are otherwise constants.

It *is* a good improvement in the amount of bindings required, and please 
consider that xine does not use libavformat and I tried only with *one* video 
per time; the advantage increase when you play more videos of different 
formats.
The size difference is minimal, but consider that I built it with -Os on 
itself, and that this isn't C++ where the visibility improves drastically the 
size of DSOs.

-- 
Diego "Flameeyes" Petten? - http://farragut.flameeyes.is-a-geek.org/
Gentoo/Alt lead, Gentoo/FreeBSD, Video, AMD64, Sound, PAM, KDE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20060922/b917916a/attachment.pgp>



More information about the ffmpeg-devel mailing list