From 0a64272db65201fc2ecb3406b89d895966933b99 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 2 Jun 2014 12:40:56 +0200 Subject: libav* autodetection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I’ll give it another shot. ffmpeg’s doc/developer.texi states their micro version always starts at 100 for this very reason. Use that to detect ffmpeg and guess its version by looking at major and minor version numbers. Let’s hope this works. --- Makefile | 24 +----------------------- src/player.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index b228a5e..3d1d151 100644 --- a/Makefile +++ b/Makefile @@ -6,13 +6,6 @@ LIBDIR:=${PREFIX}/lib INCDIR:=${PREFIX}/include MANDIR:=${PREFIX}/share/man DYNLINK:=0 -# Choose the libav implementation your system is using by uncommenting one line -# below. These versions are supported: -#LIBAV:=ffmpeg2.2 -#LIBAV:=ffmpeg2.1 -#LIBAV:=ffmpeg1.2 -#LIBAV:=libav10 -#LIBAV:=libav9 # Respect environment variables set by user; does not work with := ifeq (${CFLAGS},) @@ -92,25 +85,10 @@ LIBGCRYPT_LDFLAGS:=-lgcrypt LIBJSONC_CFLAGS:=$(shell pkg-config --cflags json-c 2>/dev/null || pkg-config --cflags json) LIBJSONC_LDFLAGS:=$(shell pkg-config --libs json-c 2>/dev/null || pkg-config --libs json) -# libav* quirks -ifeq (${LIBAV}, ffmpeg2.2) -EXTRA_CFLAGS:=-DHAVE_AVFILTER_GRAPH_SEND_COMMAND -else ifeq (${LIBAV}, ffmpeg2.1) -EXTRA_CFLAGS:= -else ifeq (${LIBAV}, ffmpeg1.2) -EXTRA_CFLAGS:=-DHAVE_AV_BUFFERSINK_GET_BUFFER_REF -DHAVE_LIBAVFILTER_AVCODEC_H -else ifeq (${LIBAV}, libav10) -EXTRA_CFLAGS:= -else ifeq (${LIBAV}, libav9) -EXTRA_CFLAGS:= -else -$(error Please choose a valid libav implementation at the top of this file) -endif - # combine all flags ALL_CFLAGS:=${CFLAGS} -I ${LIBPIANO_INCLUDE} -I ${LIBWAITRESS_INCLUDE} \ ${LIBAV_CFLAGS} ${LIBGNUTLS_CFLAGS} \ - ${LIBGCRYPT_CFLAGS} ${LIBJSONC_CFLAGS} ${EXTRA_CFLAGS} + ${LIBGCRYPT_CFLAGS} ${LIBJSONC_CFLAGS} ALL_LDFLAGS:=${LDFLAGS} -lao -lpthread -lm \ ${LIBAV_LDFLAGS} ${LIBGNUTLS_LDFLAGS} \ ${LIBGCRYPT_LDFLAGS} ${LIBJSONC_LDFLAGS} diff --git a/src/player.c b/src/player.c index b82a3aa..fba1d47 100644 --- a/src/player.c +++ b/src/player.c @@ -31,6 +31,26 @@ THE SOFTWARE. #include #include +/* ffmpeg/libav quirks + * ffmpeg’s micro versions always start at 100, that’s how we can distinguish + * ffmpeg and libav */ +#include +/* ffmpeg 2.2 */ +#if LIBAVFILTER_VERSION_MAJOR == 4 && \ + LIBAVFILTER_VERSION_MINOR <= 2 && \ + LIBAVFILTER_VERSION_MICRO >= 100 +#define HAVE_AVFILTER_GRAPH_SEND_COMMAND +#endif + +/* ffmpeg 1.2 */ +#if LIBAVFILTER_VERSION_MAJOR == 3 && \ + LIBAVFILTER_VERSION_MINOR <= 42 && \ + LIBAVFILTER_VERSION_MINOR > 32 && \ + LIBAVFILTER_VERSION_MICRO >= 100 +#define HAVE_AV_BUFFERSINK_GET_BUFFER_REF +#define HAVE_LIBAVFILTER_AVCODEC_H +#endif + #include #include #include -- cgit v1.2.3