GUAC-236: Add generalized ffmpeg-compat.h header to cover various API changes.


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/commit/570bcc38
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/tree/570bcc38
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/diff/570bcc38

Branch: refs/heads/master
Commit: 570bcc3822dc5ee07d0fb0260b36ad32240720ce
Parents: 770fec0
Author: Michael Jumper <[email protected]>
Authored: Mon Mar 14 01:33:27 2016 -0700
Committer: Michael Jumper <[email protected]>
Committed: Mon Mar 14 20:22:04 2016 -0700

----------------------------------------------------------------------
 src/guacenc/Makefile.am     | 25 ++++++++++---------
 src/guacenc/ffmpeg-compat.h | 53 ++++++++++++++++++++++++++++++++++++++++
 src/guacenc/video.c         |  7 +-----
 3 files changed, 67 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/blob/570bcc38/src/guacenc/Makefile.am
----------------------------------------------------------------------
diff --git a/src/guacenc/Makefile.am b/src/guacenc/Makefile.am
index 7219911..1230992 100644
--- a/src/guacenc/Makefile.am
+++ b/src/guacenc/Makefile.am
@@ -27,18 +27,19 @@ bin_PROGRAMS = guacenc
 man_MANS =        \
     man/guacenc.1
 
-noinst_HEADERS =   \
-    buffer.h       \
-    display.h      \
-    encode.h       \
-    guacenc.h      \
-    image-stream.h \
-    instructions.h \
-    jpeg.h         \
-    layer.h        \
-    log.h          \
-    parse.h        \
-    png.h          \
+noinst_HEADERS =    \
+    buffer.h        \
+    display.h       \
+    encode.h        \
+    ffmpeg-compat.h \
+    guacenc.h       \
+    image-stream.h  \
+    instructions.h  \
+    jpeg.h          \
+    layer.h         \
+    log.h           \
+    parse.h         \
+    png.h           \
     video.h
 
 guacenc_SOURCES =           \

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/blob/570bcc38/src/guacenc/ffmpeg-compat.h
----------------------------------------------------------------------
diff --git a/src/guacenc/ffmpeg-compat.h b/src/guacenc/ffmpeg-compat.h
new file mode 100644
index 0000000..ba3213a
--- /dev/null
+++ b/src/guacenc/ffmpeg-compat.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2016 Glyptodon, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to 
deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef GUACENC_FFMPEG_COMPAT_H
+#define GUACENC_FFMPEG_COMPAT_H
+
+#include "config.h"
+
+#include <libavcodec/avcodec.h>
+
+/*
+ * For a full list of FFmpeg API changes over the years, see:
+ *
+ *     https://github.com/FFmpeg/FFmpeg/blob/master/doc/APIchanges
+ */
+
+/* For libavcodec < 55.28.1: av_frame_*() was avcodec_*_frame(). */
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,1)
+#define av_frame_alloc avcodec_alloc_frame
+#define av_frame_free avcodec_free_frame
+#endif
+
+/* For libavcodec < 55.52.0: avcodec_free_context did not exist */
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,52,0)
+#define avcodec_free_context av_freep
+#endif
+
+/* For libavcodec < 57.7.0: av_packet_unref() was av_free_packet() */
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57,7,0)
+#define av_packet_unref av_free_packet
+#endif
+
+#endif
+

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/blob/570bcc38/src/guacenc/video.c
----------------------------------------------------------------------
diff --git a/src/guacenc/video.c b/src/guacenc/video.c
index a99cd4e..99d990e 100644
--- a/src/guacenc/video.c
+++ b/src/guacenc/video.c
@@ -22,6 +22,7 @@
 
 #include "config.h"
 #include "buffer.h"
+#include "ffmpeg-compat.h"
 #include "log.h"
 #include "video.h"
 
@@ -38,12 +39,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-/* Define av_frame_alloc() / av_frame_free() if libavcodec is old */
-#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,1)
-#define av_frame_alloc avcodec_alloc_frame
-#define av_frame_free avcodec_free_frame
-#endif
-
 guacenc_video* guacenc_video_alloc(const char* path, const char* codec_name,
         int width, int height, int bitrate) {
 

Reply via email to