summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2009-07-26 05:55:40 +0300
committerUoti Urpala <uau@glyph.nonexistent.invalid>2009-07-26 20:22:48 +0300
commita92a43b91fac43e7ad2323f17adeb8f750d35927 (patch)
treee1a46cab881faee380e1221061bd2a862cd90048
parentdddd7c62c5cce94b71174355511ae13980b13410 (diff)
downloadmpv-a92a43b91fac43e7ad2323f17adeb8f750d35927.tar.bz2
mpv-a92a43b91fac43e7ad2323f17adeb8f750d35927.tar.xz
build: Readd support for code depending on FFmpeg internals
Add configure option --ffmpeg-source-dir=PATH. If the user specifies this option then building code that depends on FFmpeg internals is enabled and the files files which use internal lavf headers will get them from this path. The FFmpeg libraries linked with must export needed internal symbols.
-rw-r--r--Makefile13
-rwxr-xr-xconfigure111
-rw-r--r--libaf/af.c2
3 files changed, 83 insertions, 43 deletions
diff --git a/Makefile b/Makefile
index 326cc5c6fd..c8abce17a8 100644
--- a/Makefile
+++ b/Makefile
@@ -137,7 +137,7 @@ SRCS_COMMON-$(LIBAVCODEC) += av_opts.c \
libmpcodecs/vf_screenshot.c \
# These filters use private headers and do not work with shared libavcodec.
-SRCS_COMMON-$(LIBAVCODEC_A) += libaf/af_lavcac3enc.c \
+SRCS_COMMON-$(LIBAVCODEC_INTERNALS) += libaf/af_lavcac3enc.c \
libmpcodecs/vf_fspp.c \
libmpcodecs/vf_geq.c \
libmpcodecs/vf_mcdeint.c \
@@ -791,6 +791,17 @@ codec-cfg.d codec-cfg.o: codecs.conf.h
$(DEPS) $(MENCODER_DEPS) $(MPLAYER_DEPS): help_mp.h
$(call ADDSUFFIXES,.d .o,mpcommon vobsub stream/stream_cddb stream/network libmpdemux/muxer_avi): version.h
+# Files that depend on libswscale internals
+libvo/vo_mga.o libvo/vo_xmga.o libmpcodecs/vf_halfpack.o libmpcodecs/vf_palette.o libmpcodecs/vf_rgb2bgr.o libmpcodecs/vf_yuy2.o: CFLAGS := -I$(FFMPEG_SOURCE_PATH) $(CFLAGS)
+
+# Files that depend on libavcodec internals
+libaf/af_lavcac3enc.o libmpcodecs/vf_fspp.o libmpcodecs/vf_geq.o libmpcodecs/vf_mcdeint.o libmpcodecs/vf_qp.o libmpcodecs/vf_spp.o libvo/jpeg_enc.o: CFLAGS := -I$(FFMPEG_SOURCE_PATH) $(CFLAGS)
+
+# yuv4mpeg has rgb conversion code under #ifdef CONFIG_LIBSWSCALE_INTERNALS
+ifeq ($(LIBSWSCALE_INTERNALS),yes)
+libvo/vo_yuv4mpeg.o: CFLAGS := -I$(FFMPEG_SOURCE_PATH) $(CFLAGS)
+endif
+
libdvdcss/%: CFLAGS := -Ilibdvdcss -D__USE_UNIX98 -D_GNU_SOURCE -DVERSION=\"1.2.10\" $(CFLAGS_LIBDVDCSS) $(CFLAGS)
libdvdnav/%: CFLAGS := -Ilibdvdnav -D__USE_UNIX98 -D_GNU_SOURCE -DHAVE_CONFIG_H -DVERSION=\"MPlayer-custom\" $(CFLAGS)
libdvdread4/%: CFLAGS := -Ilibdvdread4 -D__USE_UNIX98 -D_GNU_SOURCE $(CFLAGS_LIBDVDCSS_DVDREAD) $(CFLAGS)
diff --git a/configure b/configure
index 32521c3531..6b21d5409c 100755
--- a/configure
+++ b/configure
@@ -353,8 +353,8 @@ Video output:
--enable-v4l2 enable V4L2 Decoder audio/video output [autodetect]
--enable-dvb enable DVB video output [autodetect]
--enable-dvbhead enable DVB video output (HEAD version) [autodetect]
- --enable-mga enable mga_vid video output [broken, disabled]
- --enable-xmga enable mga_vid X11 video output [broken, disabled]
+ --enable-mga enable mga_vid video output [autodetect]
+ --enable-xmga enable mga_vid X11 video output [autodetect]
--enable-xv enable Xv video output [autodetect]
--enable-xvmc enable XvMC acceleration [disable]
--enable-vdpau enable VDPAU acceleration [autodetect]
@@ -448,6 +448,7 @@ Advanced options:
--disable-sighandler disable sighandler for crashes [enable]
--enable-crash-debug enable automatic gdb attach on crash [disable]
--enable-dynamic-plugins enable dynamic A/V plugins [disable]
+ --ffmpeg-source-dir=PATH enable features requiring internal FFmpeg headers
Use these options if autodetection fails:
--extra-cflags=FLAGS extra CFLAGS
@@ -509,6 +510,8 @@ _libavcodec_so=auto
_libavformat_so=auto
_libpostproc_so=auto
_libswscale_so=auto
+_libavcodec_internals=no
+_libswscale_internals=no
_mencoder=yes
_mplayer=yes
_x11=auto
@@ -593,8 +596,8 @@ _live=auto
_nemesi=auto
_native_rtsp=yes
_xinerama=auto
-_mga=no
-_xmga=no
+_mga=auto
+_xmga=auto
_vm=auto
_xf86keysym=auto
_mlib=no #broken, thus disabled
@@ -1004,9 +1007,9 @@ for ac_option do
--disable-nemesi) _nemesi=no ;;
--enable-xinerama) _xinerama=yes ;;
--disable-xinerama) _xinerama=no ;;
- --enable-mga) _mga=no ;;
+ --enable-mga) _mga=yes ;;
--disable-mga) _mga=no ;;
- --enable-xmga) _xmga=no ;;
+ --enable-xmga) _xmga=yes ;;
--disable-xmga) _xmga=no ;;
--enable-vm) _vm=yes ;;
--disable-vm) _vm=no ;;
@@ -1080,6 +1083,8 @@ for ac_option do
--disable-libpostproc_so) _libpostproc_so=no ;;
--enable-libswscale_so) _libswscale_so=yes ;;
--disable-libswscale_so) _libswscale_so=no ;;
+ --ffmpeg-source-dir=*)
+ _ffmpeg_source=$(echo $ac_option | cut -d '=' -f 2 ) ;;
--enable-lirc) _lirc=yes ;;
--disable-lirc) _lirc=no ;;
@@ -4481,36 +4486,6 @@ else
_novomodules="xvidix $_novomodules"
fi
-echocheck "/dev/mga_vid"
-if test "$_mga" = auto ; then
- _mga=no
- test -c /dev/mga_vid && _mga=yes
-fi
-if test "$_mga" = yes ; then
- def_mga='#define CONFIG_MGA 1'
- _vomodules="mga $_vomodules"
-else
- def_mga='#undef CONFIG_MGA'
- _novomodules="mga $_novomodules"
-fi
-echores "$_mga"
-
-
-echocheck "xmga"
-if test "$_xmga" = auto ; then
- _xmga=no
- test "$_x11" = yes && test "$_mga" = yes && _xmga=yes
-fi
-if test "$_xmga" = yes ; then
- def_xmga='#define CONFIG_XMGA 1'
- _vomodules="xmga $_vomodules"
-else
- def_xmga='#undef CONFIG_XMGA'
- _novomodules="xmga $_novomodules"
-fi
-echores "$_xmga"
-
-
echocheck "GGI"
if test "$_ggi" = auto ; then
cat > $TMPC << EOF
@@ -6919,6 +6894,16 @@ test "$_libswscale_so" = yes \
&& def_libswscale_so='#define CONFIG_LIBSWSCALE_SO 1'
echores "$_libswscale"
+def_libswscale_internals="#undef CONFIG_LIBSWSCALE_INTERNALS"
+if ! test -z "$_ffmpeg_source" ; then
+ test "$_libswscale" = yes && def_libswscale_internals="#define CONFIG_LIBSWSCALE_INTERNALS 1" && _libswscale_internals=yes
+fi
+
+def_libavcodec_internals="#undef CONFIG_LIBAVCODEC_INTERNALS"
+if ! test -z "$_ffmpeg_source" ; then
+ test "$_libavcodec" = yes && def_libavcodec_internals="#define CONFIG_LIBAVCODEC_INTERNALS 1" && _libavcodec_internals=yes
+fi
+
echocheck "libdv-0.9.5+"
if test "$_libdv" = auto ; then
_libdv=no
@@ -7007,7 +6992,48 @@ else
fi
echores "$_libnut"
-#check must be done after libavcodec one
+# These VO checks must be done after libavcodec/libswscale one
+echocheck "/dev/mga_vid"
+if test "$_mga" = auto ; then
+ _mga=no
+ test -c /dev/mga_vid && _mga=yes
+fi
+if test "$_mga" = yes ; then
+ if test "$_libswscale_internals" = yes ; then
+ def_mga='#define CONFIG_MGA 1'
+ _vomodules="mga $_vomodules"
+ else
+ _res_comment="libswscale internal headers are required by mga, sorry"
+ def_mga='#undef CONFIG_MGA'
+ _novomodules="mga $_novomodules"
+ fi
+else
+ def_mga='#undef CONFIG_MGA'
+ _novomodules="mga $_novomodules"
+fi
+echores "$_mga"
+
+
+echocheck "xmga"
+if test "$_xmga" = auto ; then
+ _xmga=no
+ test "$_x11" = yes && test "$_mga" = yes && _xmga=yes
+fi
+if test "$_xmga" = yes ; then
+ if test "$_libswscale_internals" = yes ; then
+ def_xmga='#define CONFIG_XMGA 1'
+ _vomodules="xmga $_vomodules"
+ else
+ _res_comment="libswscale internal headers are required by mga, sorry"
+ def_xmga='#undef CONFIG_XMGA'
+ _novomodules="xmga $_novomodules"
+ fi
+else
+ def_xmga='#undef CONFIG_XMGA'
+ _novomodules="xmga $_novomodules"
+fi
+echores "$_xmga"
+
echocheck "zr"
if test "$_zr" = auto ; then
#36067's seem to identify themselves as 36057PQC's, so the line
@@ -7019,11 +7045,11 @@ if test "$_zr" = auto ; then
fi
fi
if test "$_zr" = yes ; then
- if test "$_libavcodec_a" = yes ; then
+ if test "$_libavcodec_internals" = yes ; then
def_zr='#define CONFIG_ZR 1'
_vomodules="zr zr2 $_vomodules"
else
- _res_comment="libavcodec (static) is required by zr, sorry"
+ _res_comment="libavcodec internal headers are required by zr, sorry"
_novomodules="zr $_novomodules"
def_zr='#undef CONFIG_ZR'
fi
@@ -7925,7 +7951,9 @@ LIBPOSTPROC = $_libpostproc
LIBPOSTPROC_SO = $_libpostproc_so
LIBSWSCALE = $_libswscale
LIBSWSCALE_SO = $_libswscale_so
-LIBSWSCALE_INTERNALS = no
+LIBAVCODEC_INTERNALS = $_libavcodec_internals
+LIBSWSCALE_INTERNALS = $_libswscale_internals
+FFMPEG_SOURCE_PATH = $_ffmpeg_source
# Some FFmpeg codecs depend on these. Enable them unconditionally for now.
CONFIG_AANDCT=yes
@@ -8338,7 +8366,8 @@ $def_libpostproc
$def_libpostproc_so
$def_libswscale
$def_libswscale_so
-#undef CONFIG_LIBSWSCALE_INTERNALS
+$def_libavcodec_internals
+$def_libswscale_internals
#define CONFIG_DECODERS 1
#define CONFIG_ENCODERS 1
diff --git a/libaf/af.c b/libaf/af.c
index 86b00a3e09..97c5bcfd5c 100644
--- a/libaf/af.c
+++ b/libaf/af.c
@@ -69,7 +69,7 @@ static af_info_t* filter_list[]={
#endif
&af_info_volnorm,
&af_info_extrastereo,
-#ifdef CONFIG_LIBAVCODEC_A
+#ifdef CONFIG_LIBAVCODEC_INTERNALS
&af_info_lavcac3enc,
#endif
#ifdef CONFIG_LIBAVCODEC