Commit b462d132 authored by Måns Rullgård's avatar Måns Rullgård

Add compatibility wrappers for functions moved from lavf to lavc

When symbol versioning is enabled, moving symbols from one library to
another breaks binary compatibility.  This adds wrappers with the old
version tag for the av_*packet functions recently moved to lavc.

Originally committed as revision 23611 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 2661d65a
...@@ -1084,6 +1084,9 @@ HAVE_LIST=" ...@@ -1084,6 +1084,9 @@ HAVE_LIST="
struct_sockaddr_in6 struct_sockaddr_in6
struct_sockaddr_sa_len struct_sockaddr_sa_len
struct_sockaddr_storage struct_sockaddr_storage
symver
symver_gnu_asm
symver_asm_label
sys_mman_h sys_mman_h
sys_resource_h sys_resource_h
sys_select_h sys_select_h
...@@ -1198,6 +1201,8 @@ fast_unaligned_if_any="armv6 ppc x86" ...@@ -1198,6 +1201,8 @@ fast_unaligned_if_any="armv6 ppc x86"
need_memalign="altivec neon sse" need_memalign="altivec neon sse"
inline_asm_deps="!tms470" inline_asm_deps="!tms470"
symver_if_any="symver_asm_label symver_gnu_asm"
# subsystems # subsystems
mdct_select="fft" mdct_select="fft"
rdft_select="fft" rdft_select="fft"
...@@ -2714,8 +2719,17 @@ check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUI ...@@ -2714,8 +2719,17 @@ check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUI
check_ldflags -Wl,-Bsymbolic check_ldflags -Wl,-Bsymbolic
echo "X{};" > $TMPV echo "X{};" > $TMPV
test_ldflags -Wl,--version-script,$TMPV && if test_ldflags -Wl,--version-script,$TMPV; then
append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
check_cc <<EOF && enable symver_asm_label
void ff_foo(void) __asm__ ("av_foo@VERSION");
void ff_foo(void) {}
EOF
check_cc <<EOF && enable symver_gnu_asm
__asm__(".symver ff_foo,av_foo@VERSION");
void ff_foo(void) {}
EOF
fi
if enabled small; then if enabled small; then
add_cflags $size_cflags add_cflags $size_cflags
......
...@@ -283,8 +283,38 @@ AVInputFormat *av_find_input_format(const char *short_name) ...@@ -283,8 +283,38 @@ AVInputFormat *av_find_input_format(const char *short_name)
return NULL; return NULL;
} }
/* memory handling */ #if LIBAVFORMAT_VERSION_MAJOR < 53 && CONFIG_SHARED && HAVE_SYMVER
FF_SYMVER(void, av_destruct_packet_nofree, (AVPacket *pkt), "LIBAVFORMAT_52")
{
av_destruct_packet_nofree(pkt);
}
FF_SYMVER(void, av_destruct_packet, (AVPacket *pkt), "LIBAVFORMAT_52")
{
av_destruct_packet(pkt);
}
FF_SYMVER(int, av_new_packet, (AVPacket *pkt, int size), "LIBAVFORMAT_52")
{
return av_new_packet(pkt, size);
}
FF_SYMVER(int, av_dup_packet, (AVPacket *pkt), "LIBAVFORMAT_52")
{
return av_dup_packet(pkt);
}
FF_SYMVER(void, av_free_packet, (AVPacket *pkt), "LIBAVFORMAT_52")
{
av_free_packet(pkt);
}
FF_SYMVER(void, av_init_packet, (AVPacket *pkt), "LIBAVFORMAT_52")
{
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)
{ {
......
...@@ -196,4 +196,15 @@ ...@@ -196,4 +196,15 @@
# define NULL_IF_CONFIG_SMALL(x) x # define NULL_IF_CONFIG_SMALL(x) x
#endif #endif
#if HAVE_SYMVER_ASM_LABEL
# define FF_SYMVER(type, name, args, ver) \
type ff_##name args __asm__ (#name "@" ver); \
type ff_##name args
#elif HAVE_SYMVER_GNU_ASM
# define FF_SYMVER(type, name, args, ver) \
__asm__ (".symver ff_" #name "," #name "@" ver); \
type ff_##name args; \
type ff_##name args
#endif
#endif /* AVUTIL_INTERNAL_H */ #endif /* AVUTIL_INTERNAL_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment