mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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
This commit is contained in:
parent
2661d65a5f
commit
b462d13262
16
configure
vendored
16
configure
vendored
@ -1084,6 +1084,9 @@ HAVE_LIST="
|
||||
struct_sockaddr_in6
|
||||
struct_sockaddr_sa_len
|
||||
struct_sockaddr_storage
|
||||
symver
|
||||
symver_gnu_asm
|
||||
symver_asm_label
|
||||
sys_mman_h
|
||||
sys_resource_h
|
||||
sys_select_h
|
||||
@ -1198,6 +1201,8 @@ fast_unaligned_if_any="armv6 ppc x86"
|
||||
need_memalign="altivec neon sse"
|
||||
inline_asm_deps="!tms470"
|
||||
|
||||
symver_if_any="symver_asm_label symver_gnu_asm"
|
||||
|
||||
# subsystems
|
||||
mdct_select="fft"
|
||||
rdft_select="fft"
|
||||
@ -2714,8 +2719,17 @@ check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUI
|
||||
check_ldflags -Wl,-Bsymbolic
|
||||
|
||||
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'
|
||||
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
|
||||
add_cflags $size_cflags
|
||||
|
@ -283,8 +283,38 @@ AVInputFormat *av_find_input_format(const char *short_name)
|
||||
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)
|
||||
{
|
||||
|
@ -196,4 +196,15 @@
|
||||
# define NULL_IF_CONFIG_SMALL(x) x
|
||||
#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 */
|
||||
|
Loading…
Reference in New Issue
Block a user