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