[FFmpeg-devel] [PATCH] restoring binary compatibility with ffmpeg 0.5
Reinhard Tartler
siretart
Mon Jun 7 13:11:41 CEST 2010
On Mo, Jun 07, 2010 at 12:52:14 (CEST), Michael Niedermayer wrote:
> On Mon, Jun 07, 2010 at 09:42:42AM +0200, Reinhard Tartler wrote:
>> On Mo, Jun 07, 2010 at 08:02:54 (CEST), Reimar D?ffinger wrote:
>>
>> > On Mon, Jun 07, 2010 at 07:52:11AM +0200, Reinhard Tartler wrote:
>> >> void av_init_packet(AVPacket *pkt) av_weak_alias(av_init_packet);
>> >> void av_init_packet(AVPacket *pkt)
>> >> {
>> >> av_log(NULL, AV_LOG_WARNING, "diverting av_*_packet function calls to libavcodec. Recompile to improve performance\n");
>> >> av_init_packet(pkt);
>> >
>> > ff_internal_init_packet() and add one such to lavc.
>> > Either way, we should make sure we have a solution the next time.
>> > Since the @LIBAVFORMAT version is not accepted in lavc, does that
>> > mean no matter what we do, we will always break ABI if we move code?!
>>
>> if I understand you correctly, you not only consider ABI breakages
>> between releases, but also between any svn revision?
>
> i do
OK. I agree that we should unneccessarily do such breakages, not even in
trunk nor elsewhere.
>
>> Then I fear yes.
>> However, the break is already there since quite some time, and fixing it
>> to have it compatible to ffmpeg 0.5 has (or at least should have)
>> priority, IMO.
>
> for future moves, is there a problem with moving the symbols and
> updating the version script in the new home so it matches the version
> of the old (@LIBAVFORMAT in lavc for the specific symbols)
> ?
We could, but this wouldn't help. As you already noticed, ld-linux.so
obviously really expects the versioned symbol to be in libavformat:
>> objdump -T /tmp/ffmpeg/lib/libavcodec.so.52 | grep av_init_packet
000c0ce0 g DF .text 00000058 LIBAVFORMAT_52 av_init_packet
>> ffplay /tmp/Elephants_Dream-720p-Stereo.webm
FFplay version SVN-r0.5.1-4:0.5.1-1ubuntu1, Copyright (c) 2003-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5.1-1ubuntu1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 1 / 52.72. 2
libavformat 52.31. 0 / 52.64. 2
libavdevice 52. 1. 0 / 52. 2. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0.11. 0
libpostproc 51. 2. 0 / 51. 2. 0
built on Mar 4 2010 12:35:30, gcc: 4.4.3
ffplay: relocation error: ffplay: symbol av_init_packet, version LIBAVFORMAT_52 not defined in file libavformat.so.52 with link time reference
This behavior of ld-linux.so is here very annoying, right.
> for our case here this fails because we have libs that expect the symbols
> with @LIBAVCODEC and ldso isnt smart enough but that wouldnt be if we had
> updated the version script when the move happened.
I fear that wouldn't have helped either, see above.
--
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4
More information about the ffmpeg-devel
mailing list