[Ffmpeg-devel] [BUG?] missing symbols in shared libavcodec build

Dominik 'Rathann' Mierzejewski dominik
Thu Jan 25 02:22:47 CET 2007

I haven't looked too deeply into it, but here's a heads up in case somebody
discovers the cause before me.


ffmpeg 0.4.9-0.34.20061214.lvn7 is missing some symbols, breaking gstreamer-ffmpeg.

With ffmpeg-0.4.9-0.25.20061030.lvn6.i386.rpm installed
"[hans at localhost ~]$ objdump -T /usr/lib/libavcodec.so | grep img_" gives:
000face0 g    DF .text  000000aa  Base        img_crop
00141630 g    DF .text  00000185  Base        img_resample_full_init
001417c0 g    DF .text  00000068  Base        img_resample_init
000fad90 g    DF .text  000001b7  Base        img_get_alpha_info
00140c20 g    DF .text  00000025  Base        img_resample_close
000fd7d0 g    DF .text  00000291  Base        img_pad
000fb8f0 g    DF .text  00000752  Base        img_convert
00140c90 g    DF .text  000006d7  Base        img_resample
000fb0e0 g    DF .text  00000046  Base        ff_img_copy_plane
000fb130 g    DF .text  00000181  Base        img_copy

With ffmpeg-0.4.9-0.34.20061214.lvn7 installed
"[hans at localhost ~]$ objdump -T /usr/lib/libavcodec.so | grep img_" gives:
[hans at localhost ~]$ objdump -T /usr/lib/libavcodec.so | grep img_
00107180 g    DF .text  000000aa  Base        img_crop
001061e0 g    DF .text  00000139  Base        img_get_alpha_info
00106ee0 g    DF .text  00000291  Base        img_pad
001064b0 g    DF .text  00000046  Base        ff_img_copy_plane
00106500 g    DF .text  00000181  Base        img_copy

Notice how a number of img_ symbols have gone MIA, however these symbols for
example img_resample are still declared in the header files, for example
/usr/include/ffmpeg/avcodec.h line 2414-2415:
void img_resample(ImgReSampleContext *s,
                  AVPicture *output, const AVPicture *input);

This leads to errors like:
[hans at localhost sdlmame0110u2.new]$ ldd -r /usr/lib/gstreamer-0.10/libgstffmpeg.so 
        linux-gate.so.1 =>  (0x0030e000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00470000)
undefined symbol: img_resample  (/usr/lib/gstreamer-0.10/libgstffmpeg.so)
undefined symbol: img_resample_init     (/usr/lib/gstreamer-0.10/libgstffmpeg.so)
undefined symbol: img_resample_close    (/usr/lib/gstreamer-0.10/libgstffmpeg.so)
undefined symbol: img_convert   (/usr/lib/gstreamer-0.10/libgstffmpeg.so)


Since both version contain /usr/lib/libavcodec.so.51, iow the same so
version/name these symbols should not have been removed, also its obviously
wrong to to still declare removed symbols.

------- Additional Comment #2 From Hans de Goede  2007-01-24 09:17  [reply] -------

I already tried rebuilding gstreamer-ffmpeg against the new ffmpeg, but that
doesn't fix it. As said:
1) The ffmpeg headers still contain prototype declerations for the removed symbols
2) libavcodec has libavcodec.so.51 as soname for both releases, since the
   soname didn't change the update shouldn't break any apps using it.

Thus IMHO ffmpeg needs to be fixed.


I plan to tackle it in a few days. Feel free to drop any hints.


MPlayer developer and RPMs maintainer: http://mplayerhq.hu http://rpm.livna.org
There should be a science of discontent. People need hard times and
oppression to develop psychic muscles.
	-- from "Collected Sayings of Muad'Dib" by the Princess Irulan

More information about the ffmpeg-devel mailing list