add symver hacks for gnu linkers
this patch restores binary compatibility for the av_*_packet symbols that have been moved from libavformat to libavcodec. This patch works for gnu toolchains only; support for ARM RCVT will be handed in for a later point release as soon as the patch is ready and approved by the ARM maintainer(s). Originally committed as revision 23610 to svn://svn.ffmpeg.org/ffmpeg/branches/0.6
This commit is contained in:
8
configure
vendored
8
configure
vendored
@@ -1086,6 +1086,7 @@ HAVE_LIST="
|
|||||||
struct_sockaddr_in6
|
struct_sockaddr_in6
|
||||||
struct_sockaddr_sa_len
|
struct_sockaddr_sa_len
|
||||||
struct_sockaddr_storage
|
struct_sockaddr_storage
|
||||||
|
gnu_symbol_versioning
|
||||||
sys_mman_h
|
sys_mman_h
|
||||||
sys_resource_h
|
sys_resource_h
|
||||||
sys_select_h
|
sys_select_h
|
||||||
@@ -2733,7 +2734,12 @@ check_ldflags -Wl,-Bsymbolic
|
|||||||
|
|
||||||
echo "X{};" > $TMPV
|
echo "X{};" > $TMPV
|
||||||
test_ldflags -Wl,--version-script,$TMPV &&
|
test_ldflags -Wl,--version-script,$TMPV &&
|
||||||
append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
|
append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' &&
|
||||||
|
check_cc <<EOF && enable gnu_symbol_versioning
|
||||||
|
int ff_foo();
|
||||||
|
int ff_foo() {}
|
||||||
|
__asm__(".symver foo,av_foo@SOME_TAG");
|
||||||
|
EOF
|
||||||
|
|
||||||
if enabled small; then
|
if enabled small; then
|
||||||
add_cflags $size_cflags
|
add_cflags $size_cflags
|
||||||
|
@@ -282,8 +282,54 @@ AVInputFormat *av_find_input_format(const char *short_name)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* memory handling */
|
#if HAVE_GNU_SYMBOL_VERSIONING && LIBAVFORMAT_VERSION_MAJOR < 53
|
||||||
|
/* compatibility trampolines for packet functions */
|
||||||
|
|
||||||
|
void ff_av_destruct_packet_nofree(AVPacket *pkt);
|
||||||
|
void ff_av_destruct_packet(AVPacket *pkt);
|
||||||
|
int ff_av_new_packet(AVPacket *pkt, int size);
|
||||||
|
int ff_av_dup_packet(AVPacket *pkt);
|
||||||
|
void ff_av_free_packet(AVPacket *pkt);
|
||||||
|
void ff_av_init_packet(AVPacket *pkt);
|
||||||
|
|
||||||
|
__asm__(".symver ff_av_destruct_packet_nofree,av_destruct_packet_nofree@LIBAVFORMAT_52");
|
||||||
|
__asm__(".symver ff_av_destruct_packet,av_destruct_packet@LIBAVFORMAT_52");
|
||||||
|
__asm__(".symver ff_av_new_packet,av_new_packet@LIBAVFORMAT_52");
|
||||||
|
__asm__(".symver ff_av_dup_packet,av_dup_packet@LIBAVFORMAT_52");
|
||||||
|
__asm__(".symver ff_av_free_packet,av_free_packet@LIBAVFORMAT_52");
|
||||||
|
__asm__(".symver ff_av_init_packet,av_init_packet@LIBAVFORMAT_52");
|
||||||
|
|
||||||
|
void ff_av_destruct_packet_nofree(AVPacket *pkt)
|
||||||
|
{
|
||||||
|
av_destruct_packet_nofree(pkt);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ff_av_destruct_packet(AVPacket *pkt)
|
||||||
|
{
|
||||||
|
av_destruct_packet(pkt);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ff_av_new_packet(AVPacket *pkt, int size)
|
||||||
|
{
|
||||||
|
return av_new_packet(pkt, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ff_av_dup_packet(AVPacket *pkt)
|
||||||
|
{
|
||||||
|
return av_dup_packet(pkt);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ff_av_free_packet(AVPacket *pkt)
|
||||||
|
{
|
||||||
|
av_free_packet(pkt);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ff_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);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int av_get_packet(ByteIOContext *s, AVPacket *pkt, int size)
|
int av_get_packet(ByteIOContext *s, AVPacket *pkt, int size)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user