FFmpeg upgrade to revision 12758 (avformat version 52.13): support libavdevice for...
authorBenoit Bolsee <benoit.bolsee@online.be>
Wed, 17 Dec 2008 20:52:39 +0000 (20:52 +0000)
committerBenoit Bolsee <benoit.bolsee@online.be>
Wed, 17 Dec 2008 20:52:39 +0000 (20:52 +0000)
CMakeLists.txt
SConstruct
config/darwin-config.py
config/irix6-config.py
config/linux2-config.py
config/sunos5-config.py
config/win32-mingw-config.py
source/blender/imbuf/intern/util.c
source/nan_definitions.mk

index e01a37d3b3edfa2d2b834cd4d020c77c977686cf..4b96ca585a6ea49a30d152d03149e1c1412ff70b 100644 (file)
@@ -175,7 +175,7 @@ IF(UNIX)
 
   SET(FFMPEG /usr)
   SET(FFMPEG_INC ${FFMPEG}/include)
-  SET(FFMPEG_LIB avformat avcodec avutil)
+  SET(FFMPEG_LIB avformat avcodec avutil avdevice swscale)
   SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
 
   SET(JPEG_LIB jpeg)
index b2eb0ffe26dcc8ea282428a43d4bfc260c549a6e..809166586e6af8a4c891cf40e0714e2de45a2be3 100644 (file)
@@ -322,10 +322,15 @@ if not quickie and do_clean:
                                print "remove file %s"%(B.root_build_dir+entry)
                                os.remove(B.root_build_dir+entry)
                for confile in ['extern/ffmpeg/config.mak', 'extern/x264/config.mak',
-                               'extern/xvidcore/build/generic/platform.inc']:
+                               'extern/xvidcore/build/generic/platform.inc', 'extern/ffmpeg/include']:
                        if os.path.exists(confile):
                                print "clean file %s"%confile
-                               os.remove(confile)
+                               if os.path.isdir(confile):
+                                       for root, dirs, files in os.walk(confile):
+                                               for name in files:
+                                                       os.remove(os.path.join(root, name))
+                               else:
+                                       os.remove(confile)
                print B.bc.OKGREEN+'...done'+B.bc.ENDC
        else:
                print B.bc.HEADER+'Already Clean, nothing to do.'+B.bc.ENDC
index 3ef7b7132d97c157cedd3cc8a89f396dd1e4493b..cfd6a9395bba8d4d8a4a88c71f37158c56887e9c 100644 (file)
@@ -40,7 +40,11 @@ else:
 # enable ffmpeg  support
 WITH_BF_FFMPEG = True  # -DWITH_FFMPEG
 BF_FFMPEG = "#extern/ffmpeg"
-BF_FFMPEG_INC = '${BF_FFMPEG}/include'
+# trick : The version of ffmpeg in extern/ffmpeg uses explicit libav.. directory in #include statements
+#         To keep Blender compatible with older versions, I add ${BF_FFMPEG} to the inc dir so that ffmpeg
+#         finds the files directly in extern/ffmpeg/libav... while blender finds them in
+#         extern/ffmpeg/include. 
+BF_FFMPEG_INC = '${BF_FFMPEG}/include ${BF_FFMPEG}'
 if USE_SDK==True:
        BF_FFMPEG_EXTRA = '-isysroot '+MACOSX_SDK+' -mmacosx-version-min='+MAC_MIN_VERS
 #BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
index b643affb0b3373bc819806e4e4d58486f00bae48..2485c02e0950da2e51d8e5548fe1615ccc146e6e 100644 (file)
@@ -146,7 +146,7 @@ WITH_BF_BINRELOC = 'false'
 WITH_BF_FFMPEG = 'true'  # -DWITH_FFMPEG
 # Uncomment the following two lines to use system's ffmpeg
 BF_FFMPEG = LCGDIR+'/ffmpeg'
-BF_FFMPEG_LIB = 'avformat avcodec swscale avutil faad faac vorbis x264 ogg mp3lame z'
+BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice faad faac vorbis x264 ogg mp3lame z'
 BF_FFMPEG_INC = '${BF_FFMPEG}/include'
 BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
 
index 2984c06d2df9c2fc7bb89f9499565183fb7660f3..56132aaf1de127758c9b3779a1c8b457475c5c36 100644 (file)
@@ -139,8 +139,13 @@ BF_FFMPEG = '#extern/ffmpeg'
 BF_FFMPEG_LIB = ''
 # Uncomment the following two lines to use system's ffmpeg
 # BF_FFMPEG = '/usr'
-# BF_FFMPEG_LIB = 'avformat avcodec swscale avutil'
-BF_FFMPEG_INC = '${BF_FFMPEG}/include'
+# BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice'
+# trick : The version of ffmpeg in extern/ffmpeg uses explicit libav.. directory in #include statements
+#         To keep Blender compatible with older version, I add ${BF_FFMPEG} to the inc dir so that ffmpeg
+#         finds the files directly in extern/ffmpeg/libav... while blender finds them in
+#         extern/ffmpeg/include. When using system ffmpeg, you don't need that, assuming the system library
+#         still use the flat directory model, otherwise will not compile anyway
+BF_FFMPEG_INC = '${BF_FFMPEG}/include ${BF_FFMPEG}'
 BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
 
 # enable ogg, vorbis and theora in ffmpeg
index a44a9df7c75e7dea8d70dc877535d110dd4657f6..dda7d0ff2f391305168e015767abba01d88c587c 100644 (file)
@@ -131,7 +131,7 @@ WITH_BF_FFMPEG = False  # -DWITH_FFMPEG
 BF_FFMPEG = '/usr/local'
 BF_FFMPEG_INC = '${BF_FFMPEG}/include'
 BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
-BF_FFMPEG_LIB = 'avformat avcodec avutil'
+BF_FFMPEG_LIB = 'avformat avcodec avutil avdevice'
 
 # Mesa Libs should go here if your using them as well....
 WITH_BF_STATICOPENGL = False
index 6278672ca3df936baecf56863a846edf541a45ff..963f62a5f40f4231c6781191e39d1bab05349cb4 100644 (file)
@@ -21,7 +21,7 @@ BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
 BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a'
 
 WITH_BF_FFMPEG = False
-BF_FFMPEG_LIB = 'avformat swscale avcodec avutil xvidcore x264'
+BF_FFMPEG_LIB = 'avformat swscale avcodec avutil avdevice xvidcore x264'
 BF_FFMPEG_LIBPATH = LIBDIR + '/gcc/ffmpeg/lib'
 BF_FFMPEG_INC =  LIBDIR + '/gcc/ffmpeg/include'
 
index c86f9b017bf295392ca35b0c4b9300e79f8b2dc2..cf8c0978c669ab49f05e3f85aa532b0d5e337639 100644 (file)
@@ -71,7 +71,7 @@
 #ifdef WITH_FFMPEG
 #include <ffmpeg/avcodec.h>
 #include <ffmpeg/avformat.h>
-//#include <ffmpeg/avdevice.h>
+#include <ffmpeg/avdevice.h>
 #include <ffmpeg/log.h>
 
 #if LIBAVFORMAT_VERSION_INT < (49 << 16)
@@ -258,7 +258,7 @@ void do_init_ffmpeg()
        if (!ffmpeg_init) {
                ffmpeg_init = 1;
                av_register_all();
-               //avdevice_register_all();
+               avdevice_register_all();
                
                if ((G.f & G_DEBUG) == 0)
                {
index 04a1d10793156e4f1b12277f488b70c2bac2f6ee..3961e153ceafd93e68e26772e18cf973e4bf3de4 100644 (file)
@@ -100,13 +100,13 @@ endif
     ifeq ($(FREE_WINDOWS), true)
       export NAN_FTGL ?= $(LCGDIR)/gcc/ftgl
       export NAN_FFMPEG ?= $(LCGDIR)/gcc/ffmpeg
-      export NAN_FFMPEGLIBS ?= $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavcodec.a
-      export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include
+      export NAN_FFMPEGLIBS ?= $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libavdevice.a
+      export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include -I$(NANBLENDERHOME)/extern/ffmpeg
     else
       export NAN_FTGL ?= $(LCGDIR)/ftgl
       export NAN_FFMPEG ?= $(LCGDIR)/ffmpeg
-      export NAN_FFMPEGLIBS ?= $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libswscale.a $(NAN_FFMPEG)/lib/libavutil.a
-      export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include
+      export NAN_FFMPEGLIBS ?= $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libswscale.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavdevice.a
+      export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include -I$(NANBLENDERHOME)/extern/ffmpeg
     endif
 
     ifeq ($(WITH_VERSE), true)
@@ -357,8 +357,8 @@ endif
     export NAN_SDLLIBS ?= $(NAN_SDL)/lib/libSDL.a
     export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include/SDL
     export NAN_FFMPEG ?= $(LCGDIR)/ffmpeg
-    export NAN_FFMPEGLIBS = $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libswscale.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libogg.a $(NAN_FFMPEG)/lib/libfaad.a $(NAN_FFMPEG)/lib/libmp3lame.a $(NAN_FFMPEG)/lib/libvorbis.a $(NAN_FFMPEG)/lib/libx264.a $(NAN_FFMPEG)/lib/libfaac.a $(NAN_ZLIB)/lib/libz.a
-    export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include
+    export NAN_FFMPEGLIBS = $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libswscale.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavdevice.a $(NAN_FFMPEG)/lib/libogg.a $(NAN_FFMPEG)/lib/libfaad.a $(NAN_FFMPEG)/lib/libmp3lame.a $(NAN_FFMPEG)/lib/libvorbis.a $(NAN_FFMPEG)/lib/libx264.a $(NAN_FFMPEG)/lib/libfaac.a $(NAN_ZLIB)/lib/libz.a
+    export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include -I$(NANBLENDERHOME)/extern/ffmpeg
  
     # Uncomment the following line to use Mozilla inplace of netscape
     # CPPFLAGS +=-DMOZ_NOT_NET
@@ -407,7 +407,7 @@ endif
 
 ifneq ($(NAN_USE_FFMPEG_CONFIG), true)
     export NAN_FFMPEG ?= /usr
-    export NAN_FFMPEGLIBS ?= -L$(NAN_FFMPEG)/lib -lavformat -lavcodec -lavutil -lswscale -ldts -lz
+    export NAN_FFMPEGLIBS ?= -L$(NAN_FFMPEG)/lib -lavformat -lavcodec -lavutil -lswscale -lavdevice -ldts -lz
     export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include
 endif