From 246aab4761443c4fb94d16fe1ddd22e923e17abf Mon Sep 17 00:00:00 2001 From: Dan Dennedy Date: Sun, 20 Jun 2010 12:02:31 -0700 Subject: [PATCH] Fixup local ffmpeg build. Set PIC compiler flag, make libavdevice optional, and set recommended version to 0.6 branch. --- src/modules/avformat/Makefile | 9 +++++--- src/modules/avformat/configure | 41 +++++++++++++++++++++++++--------- src/modules/avformat/factory.c | 4 ++++ 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/src/modules/avformat/Makefile b/src/modules/avformat/Makefile index cdb1b9f5..75d84668 100644 --- a/src/modules/avformat/Makefile +++ b/src/modules/avformat/Makefile @@ -7,7 +7,6 @@ include config.mak LDFLAGS += -lavformat$(AVFORMAT_SUFFIX) LDFLAGS += -lavcodec$(AVFORMAT_SUFFIX) LDFLAGS += -lavutil$(AVFORMAT_SUFFIX) -LDFLAGS += -lavdevice$(AVFORMAT_SUFFIX) LDFLAGS += $(EXTRA_LIBS) ifndef CODECS @@ -44,11 +43,15 @@ CFLAGS += -DSWSCALE LDFLAGS += -lswscale$(AVFORMAT_SUFFIX) endif +ifdef DEVICES +CFLAGS += -DAVDEVICE +LDFLAGS += -lavdevice$(AVFORMAT_SUFFIX) +endif + ifdef LOCAL_FFMPEG LOCAL_FFMPEG_OBJS = ffmpeg/libavformat/libavformat$(AVFORMAT_SUFFIX) \ ffmpeg/libavcodec/libavcodec$(AVFORMAT_SUFFIX) \ - ffmpeg/libavutil/libavutil$(AVFORMAT_SUFFIX) \ - ffmpeg/libavutil/libavdevice$(AVFORMAT_SUFFIX) + ffmpeg/libavutil/libavutil$(AVFORMAT_SUFFIX) endif SRCS := $(OBJS:.o=.c) diff --git a/src/modules/avformat/configure b/src/modules/avformat/configure index a27d0cc8..c76d45b8 100755 --- a/src/modules/avformat/configure +++ b/src/modules/avformat/configure @@ -3,7 +3,7 @@ # Determine whether to recommend/use the HEAD revision of FFmpeg (unreleased) # or a specific revision based upon whether the last digit of our version # is even or odd. An odd MLT version number always represents unreleased. -svn_rev="21322" +svn_rev="0.6" micro_version=$(echo $version | cut -d . -f 3) odd_version=$(($micro_version % 2)) [ "$odd_version" -eq "1" ] && svn_rev="HEAD" @@ -24,7 +24,7 @@ FFmpeg/avformat options: --avformat-no-codecs - Disable the producer and consumer to avoid the FFmpeg codecs --avformat-no-filters - Disable the filters to make a codecs+muxers-only plugin - NOTE: The recommended version of FFmpeg is $([ "$svn_rev" = "0.5" ] && echo $svn_rev || echo SVN-r$svn_rev). + NOTE: The recommended version of FFmpeg is $([ "$svn_rev" = "0.6" ] && echo $svn_rev || echo SVN-r$svn_rev). EOF @@ -62,6 +62,7 @@ else export swscale= export codecs=true export filters=true + export devices=true pkg-config x11 > /dev/null 2>&1 export x11=$? @@ -80,6 +81,7 @@ else --avformat-swscaler ) swscale=true ;; --avformat-no-codecs ) codecs=false ;; --avformat-no-filters ) filters=false ;; + --avformat-no-devices ) devices=false ;; esac done @@ -96,22 +98,28 @@ else echo echo "Checking out ffmpeg/avformat revision $svn_rev - no password required" echo - if [ "$svn_rev" = "0.5" ]; then + if [ "$svn_rev" = "0.6" ]; then svn checkout svn://svn.mplayerhq.hu/ffmpeg/branches/$svn_rev ffmpeg else svn checkout -r $svn_rev svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg fi fi - [ -d "ffmpeg" ] && ( cd ffmpeg ; ./configure $enable_gpl $enable_swscale $svn_ffmpeg_extra ) + [ "$devices" = "false" ] && disable_devices="--disable-devices" + [ -d "ffmpeg" ] && ( cd ffmpeg ; ./configure $enable_gpl $disable_devices $enable_swscale $svn_ffmpeg_extra --extra-cflags=-fPIC ) #[ ! -f "ffmpeg/ffmpeg.patch" ] && ( cd ffmpeg ; cp ../ffmpeg.patch . ; patch -p0 < ffmpeg.patch ) - echo "CFLAGS+=-I`pwd`/ffmpeg -I`pwd`/ffmpeg/libavformat -I`pwd`/ffmpeg/libavcodec -I`pwd`/ffmpeg/libavutil -I`pwd`/ffmpeg/libavdevice" >> config.mak - echo "LDFLAGS+=-L`pwd`/ffmpeg/libavformat -L`pwd`/ffmpeg/libavcodec -L`pwd`/ffmpeg/libavutil -L`pwd`/ffmpeg/libavdevice" >> config.mak - if [ "$swscale" != "" ] || [ "$svn_rev" = "HEAD" ] + echo "CFLAGS+=-I`pwd`/ffmpeg -I`pwd`/ffmpeg/libavformat -I`pwd`/ffmpeg/libavcodec -I`pwd`/ffmpeg/libavutil" >> config.mak + echo "LDFLAGS+=-L`pwd`/ffmpeg/libavformat -L`pwd`/ffmpeg/libavcodec -L`pwd`/ffmpeg/libavutil" >> config.mak + if [ "$swscale" != "" ] || [ "$svn_rev" = "HEAD" ] || [ "$svn_rev" = "0.6" ] then echo "CFLAGS+=-I`pwd`/ffmpeg/libswscale" >> config.mak echo "LDFLAGS+=-L`pwd`/ffmpeg/libswscale" >> config.mak echo "SWSCALE=1" >> config.mak fi + if [ "$devices" = "true" ] + then + echo "CFLAGS+=-I`pwd`/ffmpeg/libavdevice" >> config.mak + echo "LDFLAGS+=-L`pwd`/ffmpeg/libavdevice" >> config.mak + fi [ $targetos = "Darwin" ] && echo "LDFLAGS+=-single_module" >> config.mak echo "LOCAL_FFMPEG=1" >> config.mak @@ -124,8 +132,8 @@ else then if [ -d "$static_ffmpeg" ] then - echo "CFLAGS+=-I$static_ffmpeg/libavformat -I$static_ffmpeg/libavcodec -I$static_ffmpeg/libavutil -I$static_ffmpeg/libavdevice" >> config.mak - echo "LDFLAGS+=-L$static_ffmpeg/libavformat -L$static_ffmpeg/libavcodec -L$static_ffmpeg/libavutil -L$static_ffmpeg/libavdevice" >> config.mak + echo "CFLAGS+=-I$static_ffmpeg/libavformat -I$static_ffmpeg/libavcodec -I$static_ffmpeg/libavutil" >> config.mak + echo "LDFLAGS+=-L$static_ffmpeg/libavformat -L$static_ffmpeg/libavcodec -L$static_ffmpeg/libavutil" >> config.mak [ $targetos = "Darwin" ] && echo "LDFLAGS+=-single_module" >> config.mak if [ "$swscale" != "" ] @@ -134,6 +142,11 @@ else echo "LDFLAGS+=-L$static_ffmpeg/libswscale" >> config.mak echo "SWSCALE=1" >> config.mak fi + if [ "$devices" = "true" ] + then + echo "CFLAGS+=-I$static_ffmpeg/libavdevice" >> config.mak + echo "LDFLAGS+=-L$static_ffmpeg/libavdevice" >> config.mak + fi echo "LDFLAGS+=-Wl,-Bsymbolic" >> config.mak extra_libs="$extra_libs -lm -lz -lbz2" @@ -147,8 +160,13 @@ else elif [ "$shared_ffmpeg" != "" ] then echo "PREFIX=$shared_ffmpeg" >> config.mak - echo "CFLAGS+=$(pkg-config --cflags libavformat libavdevice) $TMP_CFLAGS" >> config.mak - echo "LDFLAGS+=$(pkg-config --libs-only-L libavformat libavdevice)" >> config.mak + echo "CFLAGS+=$(pkg-config --cflags libavformat) $TMP_CFLAGS" >> config.mak + echo "LDFLAGS+=$(pkg-config --libs-only-L libavformat)" >> config.mak + if [ "$devices" = "true" ] + then + echo "CFLAGS+=$(pkg-config --cflags libavdevice) $TMP_CFLAGS" >> config.mak + echo "LDFLAGS+=$(pkg-config --libs-only-L libavdevice)" >> config.mak + fi [ -d "$shared_ffmpeg/include/ffmpeg/libavformat" ] && echo "CFLAGS+=-I$shared_ffmpeg/include/ffmpeg/libavformat -I$shared_ffmpeg/include/ffmpeg/libavcodec -I$shared_ffmpeg/include/ffmpeg/libavdevice" >> config.mak [ -d "$shared_ffmpeg/include/libavformat" ] && @@ -176,6 +194,7 @@ else echo "AVFORMAT_SUFFIX=$avformat_suffix" >> config.mak [ "$codecs" = "true" ] && echo "CODECS=1" >> config.mak [ "$filters" = "true" ] && echo "FILTERS=1" >> config.mak + [ "$devices" = "true" ] && echo "DEVICES=1" >> config.mak exit 0 fi diff --git a/src/modules/avformat/factory.c b/src/modules/avformat/factory.c index 2bc28f1c..eec004ba 100644 --- a/src/modules/avformat/factory.c +++ b/src/modules/avformat/factory.c @@ -33,7 +33,9 @@ extern mlt_producer producer_avformat_init( mlt_profile profile, const char *ser // ffmpeg Header files #include +#ifdef AVDEVICE #include +#endif // A static flag used to determine if avformat has been initialised static int avformat_initialised = 0; @@ -90,7 +92,9 @@ static void avformat_init( ) avformat_initialised = 1; pthread_mutex_init( &avformat_mutex, NULL ); av_register_all( ); +#ifdef AVDEVICE avdevice_register_all(); +#endif mlt_factory_register_for_clean_up( NULL, avformat_destroy ); av_log_set_level( mlt_log_get_level() ); } -- 2.39.5