mssdemux: avoid streaming to fail when download is cancelled
[platform/upstream/gstreamer.git] / m4 / as-ffmpeg.m4
1 # CFLAGS and library paths for FFMPEG
2 # taken from Autostar Sandbox, http://autostars.sourceforge.net/
3
4 dnl Usage:
5 dnl AM_PATH_FFMPEG([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
6 dnl FIXME: version checking does not work currently
7 dnl
8 dnl Example:
9 dnl AM_PATH_FFMPEG(0.4.6, , AC_MSG_ERROR([*** FFMPEG >= 0.4.6 not installed)) 
10 dnl
11 dnl Defines FFMPEG_LIBS
12 dnl FIXME: should define FFMPEG_VERSION
13 dnl
14
15 AC_DEFUN([AM_PATH_FFMPEG],
16 [
17   dnl allow for specification of a source path (for uninstalled)
18   AC_ARG_WITH(ffmpeg-source,
19     AC_HELP_STRING([--with-ffmpeg-source=DIR],
20                    [Directory where FFmpeg source is (optional)]),
21     ffmpeg_source="$withval")
22
23   dnl save CFLAGS and LIBS here
24   CFLAGS_save=$CFLAGS
25   LIBS_save=$LIBS
26   if test "x$ffmpeg_source" != "x"; then
27     dnl uninstalled FFmpeg copy
28     AC_MSG_NOTICE([Looking for FFmpeg source in $ffmpeg_source])
29     CFLAGS="-I$ffmpeg_source/libav -I$ffmpeg_source/libavcodec"
30     LIBS="-L$ffmpeg_source/libav -L$ffmpeg_source/libavcodec"
31     AC_DEFINE_UNQUOTED(HAVE_FFMPEG_UNINSTALLED, 1,
32                        [defined if we compile against uninstalled FFmpeg])
33     FFMPEG_COMMON_INCLUDE="#include <common.h>"
34   else
35     FFMPEG_COMMON_INCLUDE="#include <ffmpeg/common.h>"
36   fi
37   
38   dnl check for libavcodec
39   AC_CHECK_LIB(avcodec, avcodec_init, HAVE_FFMPEG=yes, HAVE_FFMPEG=no)
40   
41   dnl check for avcodec.h and avformat.h
42   if test "x$ffmpeg_source" != "x"; then
43     dnl uninstalled
44     AC_CHECK_HEADER(avcodec.h, , HAVE_FFMPEG=no, [/* only compile */])
45     AC_CHECK_HEADER(avformat.h, , HAVE_FFMPEG=no, [/* only compile */])
46   else
47     AC_CHECK_HEADER(ffmpeg/avcodec.h, , HAVE_FFMPEG=no)
48     AC_CHECK_HEADER(ffmpeg/avformat.h, , HAVE_FFMPEG=no)
49   fi
50
51 dnl now check if it's sufficiently new
52
53   AC_LANG_SAVE()
54   AC_LANG_C()
55
56   dnl FIXME: we use strcmp, which we know is going to break if ffmpeg ever uses
57   dnl two digits for any of their version numbers.  It makes the test so much
58   dnl easier though so let's ignore that
59   AC_TRY_RUN([
60 $FFMPEG_COMMON_INCLUDE
61 #include <stdio.h>
62 #include <string.h>
63
64 int
65 main ()
66 {
67   if (strcmp (FFMPEG_VERSION, "$1") == -1)
68   {
69     fprintf (stderr,
70              "ERROR: your copy of ffmpeg is too old (%s)\n", FFMPEG_VERSION);
71     return 1;
72   }
73   else
74     return 0;
75 }
76 ], , HAVE_FFMPEG=no)
77
78 dnl now do the actual "do we have it ?" test
79   if test "x$HAVE_FFMPEG" = "xyes"; then
80     FFMPEG_LIBS="$LIBS -lavcodec -lavformat"
81     FFMPEG_CFLAGS="$CFLAGS"
82     AC_MSG_NOTICE(we have ffmpeg)
83     dnl execute what we have to because it's found
84     ifelse([$2], , :, [$2])
85   else
86     FFMPEG_LIBS=""
87     FFMPEG_CFLAGS=""
88     dnl execute what we have to because it's not found
89     ifelse([$3], , :, [$3])
90   fi
91
92 dnl make variables available
93   AC_SUBST(FFMPEG_LIBS)
94   AC_SUBST(FFMPEG_CFLAGS)
95   AC_SUBST(HAVE_FFMPEG)
96   AC_LANG_RESTORE()
97   CFLAGS=$CFLAGS_save
98   LIBS=$LIBS_save
99 ])