Table of Contents



The below section of the wiki was made by me, Jeremy duncan, and it shows how I made FFDshow.exe. The above wiki was unaltered by me as I thought it would be disrespectful to alter it in any way.

Prerequisite software

software used: xp mce, install windows and update

Then install the visual studio sp1.

Sometimes there will be a installation problem. To fix this then use the web installer instead of the iso. Also the web installer says to install visual studio sp1 before installing this.

Rename to yasm.exe and put the file in this folder: C:\Program Files\Microsoft Visual Studio 9.0\VC\bin

Msys needs to be checked as it is unchecked g++ needs to be checked as it is unchecked sdl needs to be checked as it is unchecked

Optionally,

If you don't want to buy Visual Studio 2008 Professional, you can build the ffdshow installer using free software instead.

Install Visual C++ 2008 Express Edition with SP1, install the add ons it offers to install.

Then just install the rest of the software as described in the Prerequisite section: Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1, directx sdk August 2009, etc.

Getting the source code: How to get the files

Download the ffdshow package to your hard drive using TortoiseSVN.

Now all the sw and files necessary to build ffdshow are on the computer and you can start the project

The compilers used to create the files

Configuring the compilers: How to configure the visual studio compiler

show directory for: executable files (list is from top to bottom. use the arrows to move a line up or down.)

show directory for: include files (list is from top to bottom. use the arrows to move a line up or down.)

show directory for: reference files (list is from top to bottom. use the arrows to move a line up or down.)

show directory for: library files (list is from top to bottom. use the arrows to move a line up or down.)

show directory for: source files (list is from top to bottom. use the arrows to move a line up or down.)

show directory for: exclude directories (list is from top to bottom. use the arrows to move a line up or down.)

MinGW workaround on Vista: Bat file

It may be difficult to install MinGW on Vista. You could insert the code below in your bat file to launch MSYS or cmd.exe.
Tips to get MINGW working on MS VISTA

You don't really need to use this bat file, but it's here in case for some reason you need it here it is.

set MINGWROOT=C:\MinGW32

set MINGWBIN=%MINGWROOT%\bin
set MINGWINCLUDE=%MINGWROOT%\include
set MINGWINCLUDE=%MINGWROOT%\include\ddk
set MINGWINCLUDE=%MINGWROOT%\include\GL
set MINGWINCLUDE=%MINGWROOT%\include\SDL
set MINGWINCLUDE=%MINGWROOT%\include\sys
set MINGWLIB=%MINGWROOT%\lib
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\backward
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\bits
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\debug
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\basic_tree_policy
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\bin_search_tree_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\binary_heap_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\binomial_heap_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\binomial_heap_base_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\cc_hash_table_map_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\eq_fn
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\gp_hash_table_map_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\hash_fn
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\left_child_next_sibling_heap_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\list_update_map_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\list_update_policy
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\ov_tree_map_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\pairing_heap_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\pat_trie_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\rb_tree_map_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\rc_binomial_heap_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\resize_policy
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\splay_tree_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\thin_heap_
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\tree_policy
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\trie_policy
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\unordered_iterator
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\mingw32\bits
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\parallel
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\tr1
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\c++\tr1_impl
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include\ssp
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\include-fixed
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\install-tools
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\4.4.1\install-tools\include
set MINGWLIB=%MINGWROOT%\lib\gcc\mingw32\bin
set MINGWLIBEXEC=%MINGWROOT%\libexec\gcc\mingw32\4.4.1
set MINGWLIBEXEC=%MINGWROOT%\libexec\gcc\mingw32\4.4.1\install-tools
set MINGWLIB=%MINGWROOT%\MSYS
set MINGWLIB=%MINGWROOT%\MSYS\bin
set MINGWLIB=%MINGWROOT%\MSYS\etc
set MINGWLIB=%MINGWROOT%\MSYS\mingw
set MINGWLIB=%MINGWROOT%\MSYS\share\file

set MINGW=%MINGWROOT%;%MINGWBIN%;%MINGWINCLUDE%;%MINGWLIB%;%MINGWLIBEXEC%;%MSYS% 

rem to add more resource paths just use the set command like above and then add it to the set PATH like below

set PATH=C:\MINGW32;%path%
set PATH=C:\MINGW32\bin;%path%
set PATH=C:\MINGW32\include;%path%
set PATH=C:\MINGW32\include\ddk;%path%
set PATH=C:\MINGW32\include\GL;%path%
set PATH=C:\MINGW32\include\SDL;%path%
set PATH=C:\MINGW32\include\sys;%path%
set PATH=C:\MINGW32\lib;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\backward;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\bits;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\debug;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\basic_tree_policy;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\bin_search_tree_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\binary_heap_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\binomial_heap_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\binomial_heap_base_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\cc_hash_table_map_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\eq_fn;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\gp_hash_table_map_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\hash_fn;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\left_child_next_sibling_heap_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\list_update_map_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\list_update_policy;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\ov_tree_map_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\pairing_heap_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\pat_trie_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\rb_tree_map_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\rc_binomial_heap_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\resize_policy;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\splay_tree_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\thin_heap_;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\tree_policy;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\trie_policy;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\ext\pb_ds\detail\unordered_iterator;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\mingw32\bits;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\parallel;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\tr1;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\c++\tr1_impl;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include\ssp;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\include-fixed;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\install-tools;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\4.4.1\install-tools\include;%path%
set PATH=C:\MINGW32\lib\gcc\mingw32\bin;%path%
set PATH=C:\MINGW32\libexec\gcc\mingw32\4.4.1;%path%
set PATH=C:\MINGW32\libexec\gcc\mingw32\4.4.1\install-tools;%path%
set PATH=C:\MINGW32\MSYS;%path%
set PATH=C:\MINGW32\MSYS\bin;%path%
set PATH=C:\MINGW32\MSYS\etc;%path%
set PATH=C:\MINGW32\MSYS\mingw;%path%
set PATH=C:\MINGW32\MSYS\share\file;%path%

cmd

For vista all the programs need to be installed as admin, and run as administrator.

Then to run the bat filein vista right click the bat file and choose to run as administrator.

If that software is updated then the directories in the bat file may not match the directories the new mingw sw installs, if not then double check to see if the bat file lists all the folders the new sw installs.

Using Mingw Msys to create the files listed in the compilers section

jeremy@jeremy-A0DCBD577E3 ~
$

(Then I paste this line of code showing a directory for a makefile next to the dollar sign like so:)

jeremy@jeremy-A0DCBD577E3 ~
$ cd "/c/ffdshow-tryout/trunk/src/imgFilters/KernelDeint"

(Then I press enter and the result is shown below:)

jeremy@jeremy-A0DCBD577E3 /c/ffdshow-tryout/trunk/src/imgFilters/KernelDeint
$

(Then by the dollar sign I type Make, then press enter and it will create the file in the bin directory.)

I do this for all the files in the list below:

Using bat file cmd prompt to create the files listed in the compilers section

               
* libavcodec, libmplayer.dll, ffmpegmt.dll, ff_theora.dll, ff_x264.dll:   cd c:\ffdshow-tryout\src

The only difference between compiling the gcc files with the bat file cmd prompt vs using mingw msys is the code used to go to the directory. The steps to follow are the same as in the section above on compiling:

Using Visual Studio to create the files listed in the compilers section

from visual studio create these files in the order shown starting from the top:

You do this for every file I listed above.

Using Innosetup to create the ffdshow setup program

tryout_revision buildyear buildmonth buildday

All done ! :)

errors in msys and visual studio during compiling

This is a error created by not installing the custom mingw software properly. Make sure all the boxes are checked in the “Select components” page when you install the custom mingw.

In order to fix this yasm error, make sure you don't compile ffdshow in visual studio until the other files that should be created first are created. Also use the yasm file linked to or a newer version but the same kind (for “normal” (Visual Studio or similar) use on 32-bit Windows).

Also the problem may be your trying to compile ffdshow.ax or xvidcore in msvc and the svn files aren't in the c:\ folder. To fix this then put the svn files in the c:\ folder.

Install the Windows® Server 2003 R2 Platform SDK as described in the prerequisite software section.

Build the visual studio files as described using release unicode, win32, then build ffdshow last.

If you open the ffdshow_2008_icl10.sln before you open ffdshow_2008.sln the files will be converted and you might get a error when you open ffdshow_2008.sln; so open ffdshow_2008.sln first and compile the files that aren't in the ffdshow_2008_icl10.sln, then open ffdshow_2008_icl10.sln and compile those files.

Then use command prompt.

How to make a patch file