[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14408] trunk/blender/extern: == FFMPEG ==

Peter Schlaile peter at schlaile.de
Sun Apr 13 17:17:19 CEST 2008


Revision: 14408
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14408
Author:   schlaile
Date:     2008-04-13 17:17:06 +0200 (Sun, 13 Apr 2008)

Log Message:
-----------
== FFMPEG ==

Added H264-encoding support using libx264.

Beware: it currently only works with scons and it needs nasm or yasm as
an additional dependency!

Modified Paths:
--------------
    trunk/blender/extern/SConscript
    trunk/blender/extern/ffmpeg/SConscript
    trunk/blender/extern/ffmpeg/configure
    trunk/blender/extern/ffmpeg/libavcodec/libx264.c
    trunk/blender/extern/ffmpeg/libswscale/yuv2rgb_altivec.c
    trunk/blender/extern/ffmpeg/patches/README

Added Paths:
-----------
    trunk/blender/extern/x264/
    trunk/blender/extern/x264/AUTHORS
    trunk/blender/extern/x264/COPYING
    trunk/blender/extern/x264/Makefile
    trunk/blender/extern/x264/common/
    trunk/blender/extern/x264/common/amd64/
    trunk/blender/extern/x264/common/amd64/amd64inc.asm
    trunk/blender/extern/x264/common/amd64/cpu-a.asm
    trunk/blender/extern/x264/common/amd64/dct-a.asm
    trunk/blender/extern/x264/common/amd64/deblock-a.asm
    trunk/blender/extern/x264/common/amd64/mc-a.asm
    trunk/blender/extern/x264/common/amd64/mc-a2.asm
    trunk/blender/extern/x264/common/amd64/pixel-a.asm
    trunk/blender/extern/x264/common/amd64/pixel-sse2.asm
    trunk/blender/extern/x264/common/amd64/predict-a.asm
    trunk/blender/extern/x264/common/amd64/quant-a.asm
    trunk/blender/extern/x264/common/bs.h
    trunk/blender/extern/x264/common/cabac.c
    trunk/blender/extern/x264/common/cabac.h
    trunk/blender/extern/x264/common/clip1.h
    trunk/blender/extern/x264/common/common.c
    trunk/blender/extern/x264/common/common.h
    trunk/blender/extern/x264/common/cpu.c
    trunk/blender/extern/x264/common/cpu.h
    trunk/blender/extern/x264/common/dct.c
    trunk/blender/extern/x264/common/dct.h
    trunk/blender/extern/x264/common/display-x11.c
    trunk/blender/extern/x264/common/display.h
    trunk/blender/extern/x264/common/frame.c
    trunk/blender/extern/x264/common/frame.h
    trunk/blender/extern/x264/common/i386/
    trunk/blender/extern/x264/common/i386/cpu-a.asm
    trunk/blender/extern/x264/common/i386/dct-a.asm
    trunk/blender/extern/x264/common/i386/dct.h
    trunk/blender/extern/x264/common/i386/deblock-a.asm
    trunk/blender/extern/x264/common/i386/i386inc.asm
    trunk/blender/extern/x264/common/i386/mc-a.asm
    trunk/blender/extern/x264/common/i386/mc-a2.asm
    trunk/blender/extern/x264/common/i386/mc-c.c
    trunk/blender/extern/x264/common/i386/mc.h
    trunk/blender/extern/x264/common/i386/pixel-a.asm
    trunk/blender/extern/x264/common/i386/pixel-sse2.asm
    trunk/blender/extern/x264/common/i386/pixel.h
    trunk/blender/extern/x264/common/i386/predict-a.asm
    trunk/blender/extern/x264/common/i386/predict-c.c
    trunk/blender/extern/x264/common/i386/predict.h
    trunk/blender/extern/x264/common/i386/quant-a.asm
    trunk/blender/extern/x264/common/i386/quant.h
    trunk/blender/extern/x264/common/macroblock.c
    trunk/blender/extern/x264/common/macroblock.h
    trunk/blender/extern/x264/common/mc.c
    trunk/blender/extern/x264/common/mc.h
    trunk/blender/extern/x264/common/mdate.c
    trunk/blender/extern/x264/common/osdep.h
    trunk/blender/extern/x264/common/pixel.c
    trunk/blender/extern/x264/common/pixel.h
    trunk/blender/extern/x264/common/ppc/
    trunk/blender/extern/x264/common/ppc/dct.c
    trunk/blender/extern/x264/common/ppc/dct.h
    trunk/blender/extern/x264/common/ppc/deblock.c
    trunk/blender/extern/x264/common/ppc/mc.c
    trunk/blender/extern/x264/common/ppc/mc.h
    trunk/blender/extern/x264/common/ppc/pixel.c
    trunk/blender/extern/x264/common/ppc/pixel.h
    trunk/blender/extern/x264/common/ppc/ppccommon.h
    trunk/blender/extern/x264/common/ppc/predict.c
    trunk/blender/extern/x264/common/ppc/predict.h
    trunk/blender/extern/x264/common/ppc/quant.c
    trunk/blender/extern/x264/common/ppc/quant.h
    trunk/blender/extern/x264/common/predict.c
    trunk/blender/extern/x264/common/predict.h
    trunk/blender/extern/x264/common/quant.c
    trunk/blender/extern/x264/common/quant.h
    trunk/blender/extern/x264/common/set.c
    trunk/blender/extern/x264/common/set.h
    trunk/blender/extern/x264/common/sparc/
    trunk/blender/extern/x264/common/sparc/pixel.asm
    trunk/blender/extern/x264/common/sparc/pixel.h
    trunk/blender/extern/x264/common/visualize.c
    trunk/blender/extern/x264/common/visualize.h
    trunk/blender/extern/x264/common/vlc.h
    trunk/blender/extern/x264/config.guess
    trunk/blender/extern/x264/configure
    trunk/blender/extern/x264/encoder/
    trunk/blender/extern/x264/encoder/analyse.c
    trunk/blender/extern/x264/encoder/analyse.h
    trunk/blender/extern/x264/encoder/cabac.c
    trunk/blender/extern/x264/encoder/cavlc.c
    trunk/blender/extern/x264/encoder/encoder.c
    trunk/blender/extern/x264/encoder/eval.c
    trunk/blender/extern/x264/encoder/macroblock.c
    trunk/blender/extern/x264/encoder/macroblock.h
    trunk/blender/extern/x264/encoder/me.c
    trunk/blender/extern/x264/encoder/me.h
    trunk/blender/extern/x264/encoder/ratecontrol.c
    trunk/blender/extern/x264/encoder/ratecontrol.h
    trunk/blender/extern/x264/encoder/rdo.c
    trunk/blender/extern/x264/encoder/set.c
    trunk/blender/extern/x264/encoder/set.h
    trunk/blender/extern/x264/encoder/slicetype.c
    trunk/blender/extern/x264/extras/
    trunk/blender/extern/x264/extras/getopt.c
    trunk/blender/extern/x264/extras/getopt.h
    trunk/blender/extern/x264/extras/stdint.h
    trunk/blender/extern/x264/x264.h

Modified: trunk/blender/extern/SConscript
===================================================================
--- trunk/blender/extern/SConscript	2008-04-13 15:14:32 UTC (rev 14407)
+++ trunk/blender/extern/SConscript	2008-04-13 15:17:06 UTC (rev 14408)
@@ -16,7 +16,8 @@
     SConscript(['verse/dist/SConstruct'])
 
 if env['WITH_BF_FFMPEG'] and env['BF_FFMPEG_LIB'] == '':
-    SConscript(['ffmpeg/SConscript']);
+    SConscript(['x264/SConscript'])
+    SConscript(['ffmpeg/SConscript'])
 
 if env['OURPLATFORM'] == 'linux2':
-    SConscript(['binreloc/SConscript']);
\ No newline at end of file
+    SConscript(['binreloc/SConscript']);

Modified: trunk/blender/extern/ffmpeg/SConscript
===================================================================
--- trunk/blender/extern/ffmpeg/SConscript	2008-04-13 15:14:32 UTC (rev 14407)
+++ trunk/blender/extern/ffmpeg/SConscript	2008-04-13 15:17:06 UTC (rev 14408)
@@ -6,10 +6,14 @@
 root = "extern/ffmpeg"
 
 if env['OURPLATFORM'] == 'win32-mingw':
-    ffmpeg_switches = "--disable-shared --enable-liba52bin --enable-gpl --disable-network --disable-zlib --disable-vhook --disable-ffserver --disable-ffplay --enable-swscaler --enable-pthreads"
+    ffmpeg_switches = "--disable-shared --enable-liba52bin --enable-gpl --disable-network --disable-zlib --disable-vhook --disable-ffserver --disable-ffplay --enable-swscaler --enable-pthreads --enable-libx264"
 else:
-    ffmpeg_switches = "--disable-shared --enable-liba52bin --enable-gpl --disable-network --disable-zlib --disable-vhook --disable-ffserver --disable-ffplay --enable-swscaler --enable-memalign-hack"
+    ffmpeg_switches = "--disable-shared --enable-liba52bin --enable-gpl --disable-network --disable-zlib --disable-vhook --disable-ffserver --disable-ffplay --enable-swscaler --enable-memalign-hack --enable-libx264"
 
+extra_variables = { }
+extra_variables["CONFIG_LIBX264"] = "yes"
+extra_includes = [ "../x264" ]
+
 import sys
 import os
 import re
@@ -75,7 +79,7 @@
             return
                 
 def getmakevars(filenames):
-    variables = { }
+    variables = extra_variables.copy()
     for filename in filenames:
        fp = open(filename)
        print "Processing makefile: " + filename
@@ -90,7 +94,7 @@
 
 if not os.path.isfile(root + "/config.mak"):
     os.chdir(root);
-    os.system('sh configure ' + ffmpeg_switches)
+    os.system("sh -c './configure " + ffmpeg_switches + "'")
     os.chdir("../..");
 else:
     print "(skipped, config.mak already exists)"
@@ -126,7 +130,7 @@
     if env['OURPLATFORM'] in ['win32-mingw', 'win32-vc' , 'darwin'] :
     	defs = "HAVE_AV_CONFIG_H  _ISOC9X_SOURCE"
     else :
-		defs = "HAVE_AV_CONFIG_H _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE _ISOC9X_SOURCE"
+	defs = "HAVE_AV_CONFIG_H _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE _ISOC9X_SOURCE"
     cflags = ""
     
     if "CFLAGS" in vars:
@@ -146,7 +150,7 @@
                             root + "/include/ffmpeg/" + h)
 
     ff_env.BlenderLib (libname="extern_" + lib, sources=sources,
-                    includes=["."] + all_libs,
+                    includes=["."] + all_libs + extra_includes,
                     defines=Split(defs),
                     libtype=['core', 'intern', 'player'],
                     priority = [5, 5, 200],

Modified: trunk/blender/extern/ffmpeg/configure
===================================================================
--- trunk/blender/extern/ffmpeg/configure	2008-04-13 15:14:32 UTC (rev 14407)
+++ trunk/blender/extern/ffmpeg/configure	2008-04-13 15:17:06 UTC (rev 14408)
@@ -1572,7 +1572,7 @@
 enabled libogg     && require libogg ogg/ogg.h ogg_sync_init -logg
 enabled libtheora  && require libtheora theora/theora.h theora_info_init -ltheora -logg
 enabled libvorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
-enabled libx264    && require x264 x264.h x264_encoder_open -lx264
+# enabled libx264    && require x264 x264.h x264_encoder_open -lx264
 enabled libxvid    && require Xvid xvid.h xvid_global -lxvidcore
 enabled mlib       && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
 

Modified: trunk/blender/extern/ffmpeg/libavcodec/libx264.c
===================================================================
--- trunk/blender/extern/ffmpeg/libavcodec/libx264.c	2008-04-13 15:14:32 UTC (rev 14407)
+++ trunk/blender/extern/ffmpeg/libavcodec/libx264.c	2008-04-13 15:17:06 UTC (rev 14408)
@@ -265,8 +265,10 @@
     }
 
     x4->enc = x264_encoder_open(&x4->params);
-    if(!x4->enc)
-        return -1;
+    if(!x4->enc) {
+	    av_log(avctx, AV_LOG_ERROR, "FFMPEG: X264 encoder open failed!\n");
+	    return -1;
+    }
 
     avctx->coded_frame = &x4->out_pic;
 

Modified: trunk/blender/extern/ffmpeg/libswscale/yuv2rgb_altivec.c
===================================================================
--- trunk/blender/extern/ffmpeg/libswscale/yuv2rgb_altivec.c	2008-04-13 15:14:32 UTC (rev 14407)
+++ trunk/blender/extern/ffmpeg/libswscale/yuv2rgb_altivec.c	2008-04-13 15:17:06 UTC (rev 14408)
@@ -423,10 +423,8 @@
             vi   += 8;                                                  \
                                                                         \
         }                                                               \
-                                                                        \
         outo  += (outstrides[0])>>4;                                    \
         oute  += (outstrides[0])>>4;                                    \
-                                                                        \
         ui    += instrides_scl[1];                                      \
         vi    += instrides_scl[2];                                      \
         y1i   += instrides_scl[0];                                      \

Modified: trunk/blender/extern/ffmpeg/patches/README
===================================================================
--- trunk/blender/extern/ffmpeg/patches/README	2008-04-13 15:14:32 UTC (rev 14407)
+++ trunk/blender/extern/ffmpeg/patches/README	2008-04-13 15:17:06 UTC (rev 14408)
@@ -5,4 +5,19 @@
 - MMX acceleration for the YUV -> BGRA32 transformation.
 - Bugfix for swscale, that screwed up RGB -> RGB32 with RAW AVIs
 
+Additionally:
+- To make ffmpeg work with scons, you have to disable the libx264 library
+  test! (or you have to install libx264 seperately, your choice)
+
+  change
+
+  enabled libx264    && require x264 x264.h x264_encoder_open -lx264
+
+  into
+
+  # enabled libx264    && require x264 x264.h x264_encoder_open -lx264
+
+  within configure
+
+
 -- Peter 
\ No newline at end of file

Added: trunk/blender/extern/x264/AUTHORS
===================================================================
--- trunk/blender/extern/x264/AUTHORS	                        (rev 0)
+++ trunk/blender/extern/x264/AUTHORS	2008-04-13 15:17:06 UTC (rev 14408)
@@ -0,0 +1,111 @@
+# Contributors to x264
+# 
+# The format of this file was inspired by the Linux kernel CREDITS file.
+# Authors are listed alphabetically.
+# 
+# The fields are: name (N), email (E), web-address (W), CVS account login (C),
+# PGP key ID and fingerprint (P), description (D), and snail-mail address (S).
+
+N: Alex Izvorski
+E: aizvorski AT gmail DOT com
+D: x86 asm (sse2)
+
+N: Alex Wright
+E: alexw0885 AT hotmail DOT com
+D: Motion estimation (subpel and mixed refs)
+D: B-RDO
+
+N: Andrew Dunstan
+D: win64 asm port
+
+N: bobololo
+D: Avisynth input
+D: MP4 muxing
+
+N: Christian Heine
+E: sennindemokrit AT gmx DOT net
+D: x86 asm
+
+N: Placeholder
+D: Altivec optimizations
+
+N: Eric Petit
+E: titer AT videolan DOT org
+C: titer
+D: Altivec asm
+D: BeOS and MacOS X ports.
+S: France
+
+N: Francesco Corriga
+D: VfW
+
+N: Guillaume Poirier
+E: gpoirier CHEZ mplayerhq POINT hu
+D: Altivec optimizations
+S: Brittany, France
+
+N: Justin Clay
+E: justin_clay AT hotmail DOT com
+C: wheatgerm
+D: Inital work on VfW
+S: Nova Scotia, Canada
+
+N: Laurent Aimar
+E: fenrir AT via.ecp DOT fr
+C: fenrir
+D: Intial import, former maintainer
+D: x86 asm (mmx/mmx2)
+S: France
+
+N: Loren Merritt
+E: lorenm AT u.washington DOT edu
+C: pengvado
+D: maintainer
+D: All areas of encoder analysis and algorithms
+D: Motion estimation, rate control, macroblock & frame decisions, RDO, etc.
+D: Multithreading
+D: x86 and x86_64 asm (mmx/mmx2/sse2)
+S: USA
+
+N: Mans Rullgard
+E: mru AT inprovide DOT com
+C: mru
+D: Rate control
+S: Southampton, UK
+
+N: Michael Niedermayer
+E: michaelni AT gmx DOT at
+D: Rate control
+
+N: Mike Matsnev
+E: mike AT po DOT cs DOT msu DOT su
+D: Matroska muxing
+
+N: Min Chen
+E: chenm001 AT 163 DOT com
+C: chenm001
+D: Win32/VC 6.0 port
+D: gcc asm to nasm conversion
+D: VfW
+S: China
+
+N: Phil Jensen
+E: philj AT csufresno DOT edu
+D: SPARC asm
+
+N: Radek Czyz
+E: radoslaw AT syskin DOT cjb DOT net
+D: Cached motion compensation
+
+N: Riccardo Stievano
+E: walkunafraid AT tin DOT it
+D: VfW
+
+N: Tuukka Toivonen
+E: tuukkat AT ee DOT oulu DOT fi
+D: Visualization
+
+N: Vincent Torri
+E: Vincent DOT Torri AT iecn DOT u-nancy DOT fr
+D: GTK frontend
+

Added: trunk/blender/extern/x264/COPYING
===================================================================
--- trunk/blender/extern/x264/COPYING	                        (rev 0)
+++ trunk/blender/extern/x264/COPYING	2008-04-13 15:17:06 UTC (rev 14408)
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list