home

From sources

  1. Prerequisites
    • Latest packages from mingw project. You'll need gcc, binutils, mingw-runtime, w32api and mingw32-make.
    • DirectX SDK or Microsoft Platform SDK. Can be downloaded from here.
    • Optionally STLPort. It's a STL replacement. If you'll install it to C:/Program Files/STLport, ffdshow Visual Studio projects will automatically use it. If you'd install it to other directory, just change the include path for ffdshow.ax and ff_wmv9.dll projects.
  2. Dynamic libraries
    1. libmplayer.dll
      • Go to ffdshow/src/mplayer directory
      • If compiling using GNU tools (mingw, cygwin) run make command. This is recommended, because hand-optimized assembler code will be used.
      • If using Visual Studio 6 open libmplayer.dsw workspace file, select target and build project
      • If using Visual Studio .NET 2003 open libmplayer.sln solution file, select target and build solution
      • In ffdshow/bin directory libmplayer.dll file will be created
    2. libavcodec.dll
      • Go to ffdshow/src/ffmpeg directory
      • If compiling using GNU tools (mingw, cygwin) run make command. This way hand-optimized assembly code will be used.
      • If using Visual Studio 6 open libavcodec.dsw workspace file, select target and build project. Additional two targets are present: Release ICL and Debug ICL. If you have Intel C++ Compiler installed and selected and also GCC is preset, it will build libavcodec with C portions optimized by Intel C++ Compiler and hand-optimized assembler code compile by gcc. This could produce quite well optimized result, but I've never did any speed comparison of such build against simple GCC compiled one.
      • If using Visual Studio .NET 2003 open libavcodec.sln solution file, select target and build solution
      • In ffdshow/bin directory libavcodec.dll file will be created
    3. ff_libmad.dll
      • Go to ffdshow/src/codecs/libmad directory
      • If compiling using GNU tools (mingw, cygwin) run make command
      • If using Visual Studio 6 open ff_libmad.dsw workspace file, select target and build project
      • If using Visual Studio .NET 2003 open ff_libmad.sln solution file, select target and build solution
      • In ffdshow/bin directory ff_libmad.dll file will be created
    4. libmpeg2_ff.dll
      • Go to ffdshow/src/codecs/libmad directory
      • If compiling using GNU tools (mingw, cygwin) run make command. This is recommended, because hand-optimized assembler code will be used.
      • If using Visual Studio .NET 2003 open libmpeg2_ff.sln solution file, select target and build solution
      • In ffdshow/bin directory libmpeg2_ff.dll file will be created
    5. ff_mpeg2enc.dll
      • Go to ffdshow/src/codecs/mpeg2enc directory
      • If compiling using GNU tools (mingw, cygwin) run make command. This is recommended, because hand-optimized assembler code will be used.
      • If using Visual Studio 6 open ff_mpeg2enc.dsw workspace file, select target and build project
      • If using Visual Studio .NET 2003 open ff_mpeg2enc.sln solution file, select target and build solution
      • In ffdshow/bin directory ff_mpeg2enc.dll file will be created
    6. ff_theora.dll
      • Go to ffdshow/src/codecs/theora directory
      • If compiling using GNU tools (mingw, cygwin) run make command
      • If using Visual Studio 6 open ff_theora.dsw workspace file, select target and build project
      • If using Visual Studio .NET 2003 open ff_theora.sln solution file, select target and build solution
      • In ffdshow/bin directory ff_theora.dll file will be created
    7. ff_wmv9.dll
      • Go to ffdshow/src/codecs/wmv9 directory
      • If using Visual Studio 6 open ff_wmv9.dsw workspace file, select target and build project
      • If using Visual Studio .NET 2003 open ff_wmv9.sln solution file, select target and build solution
      • In ffdshow/bin directory ff_wmv9.dll file will be created
    8. ff_x264.dll
      • Go to ffdshow/src/codecs/x264 directory
      • Run make command to compile library using GNU tools
      • In ffdshow/bin directory ff_x264.dll file will be created
    9. TomsMoComp_ff.dll
      • Go to ffdshow/src/imgFilters/TomsMoComp directory
      • If using Visual Studio 6 open TomsMoComp_ff?.dsw workspace file, select target and build project
      • If using Visual Studio .NET 2003 open TomsMoComp_ff?.sln solution file, select target and build solution
      • In ffdshow/bin directory TomsMoComp_ff?.dll file will be created
  3. ffdshow.ax
    • Prepare baseclasses library
    • If compiling using GNU tools (mingw, cygwin), go to ffdshow/src directory and run make command. This will take a long time, because current GCC windows port can't use precompiled headers.
    • If using Visual Studio 6 go to ffdshow directory, open ffdshow.dsw workspace file, select ffdshow as active project, choose target and build project
    • If using Visual Studio .NET 2003 go to ffdshow directory, open ffdshow.sln solution file, set ffdshow as startup project, select target and build solution.
    • Visual Studio workspace/solution contains ff_libmad, ff_theora, ff_wmv9 and TomsMoComp_ff? projects, so you don't need to build them separately as described above.
    • Intel C++ Compiler is unable to compile TomsMoComp_ff?. You have to use Microsoft C Compiler.
    • Makefile builds all dynamic libraries except for ff_wmv9.dll and TomsMoComp_ff?.dll.
  4. Creating installer package
    • Download NSIS 2.
    • NSIS associates nsi extension, but for historical reasons ffdshow uses nsis2 extension for file describing the installer package. Go to ffdshow/bin/distrib directory, associate nsis2 extension with nsis and build the installer. UPX executalbe compressor is used to get slightly smaller installer packages.