aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorReinhard Tartler <siretart@tauware.de>2010-06-15 12:29:19 +0000
committerReinhard Tartler <siretart@tauware.de>2010-06-15 12:29:19 +0000
commit03b47bb8d7364d77a205c6aa2abadfbc6643c702 (patch)
tree8042461a9d1e237dd3abd972abaf84f517aa3f5e /libavformat
parent05b4e4fe49af2db8e0308e7b451830e48be9209c (diff)
downloadffmpeg-03b47bb8d7364d77a205c6aa2abadfbc6643c702.tar.gz
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
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/utils.c48
1 files changed, 47 insertions, 1 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index e975f5de24..f8b098156d 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -282,8 +282,54 @@ AVInputFormat *av_find_input_format(const char *short_name)
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)
{