Free File Viewer Source Code

Free File Viewer itself is not open source software.

For video and audio playback, Free File Viewer uses the LGPL version of FFmpeg and related libraries as its playback engine. The entire development environment setup and build procedure is explained here.

You ONLY need these files if you want to build your own media player! If you just want to play movies, download Free File Viewer and install it. It is ready to use as-is.

Development Environment setup

You will need MinGW to build FFmpeg on Windows. Also, you need to have Microsoft's LIB.EXE in your system path - get it e.g. from Visual C++, there is a free Express edition. Run these installers in the listed order and use the installation paths suggested by the installers:

Main MinGW / MSYS environment

Unless stated otherwise, always extract the archive files with full folder information.

Extract binutils-2.20-1-mingw32-bin.tar.gz to C:\MinGW\
Extract gcc-core-3.4.5-20060117-3.tar.gz to C:\MinGW\
Extract mingwrt-3.17-mingw32-dev.tar.gz to C:\MinGW\
Extract mingwrt-3.17-mingw32-dll.tar.gz to C:\MinGW\
Extract w32api-3.14-mingw32-dev.tar.gz to C:\MinGW\

Run MSYS-1.0.11.exe - Minimal SYStem. Use default options.

When the command prompt pops up, answer the questions like this:
"Do you wish to continue with the post install [yn ]" y
"Do you have MinGW installed? [yn ]" y
"Where is your MinGW installation?" c:/mingw

Run msysDTK-1.0.1.exe - MSYS Developer Tool Kit. Use default options.

Extract pr.exe from coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2 tar file to c:\msys\1.0\bin

Upgrade GCC

Extract gcc-core-4.5.0-1-mingw32-bin.tar.lzma to C:\MinGW
Extract gcc-c++-4.5.0-1-mingw32-bin.tar.lzma to C:\MinGW
Extract libgcc-4.5.0-1-mingw32-dll-1.tar.lzma to C:\MinGW
Extract libstdc++-4.5.0-1-mingw32-dll-6.tar.lzma to C:\MinGW
Extract libgmp-5.0.1-1-mingw32-dll-10.tar.lzma to C:\MinGW
Extract libmpc-0.8.1-1-mingw32-dll-2.tar.lzma to C:\MinGW
Extract libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma to C:\MinGW

Install GDB

Extract gdb-7.1-2-mingw32-bin.tar.gz to C:\msys\1.0
Extract libexpat-2.0.1-1-mingw32-dll-1.tar.gz to C:\msys\1.0

Install wget

Extract to C:\MinGW.
Extract to C:\MinGW

Install unzip

Extract to C:\MinGW.

Install pkgconfig lite

Extract to C:\MinGW

Install Yasm

Save yasm-1.1.0-win32.exe as yasm.exe in C:\msys\1.0\bin

Patch system include files

Yes, unfortunately it is needed to patch 2 system include files in order to build the newest FFmpeg.
tempnam.diff and strcasecmp.diff.

Building FFmpeg and related libraries

After you have installed MinGW and updated it as described above, you are ready to build FFmpeg and related libraries. Start a shell by double-clicking the MSYS icon on your desktop and follow the instructions below.

Create directories

mkdir /ffmpeg
mkdir /ffmpeg/libraries
mkdir /ffmpeg/Binaries_LGPL
mkdir /ffmpeg/olibs/include
mkdir /ffmpeg/olibs/lib
mkdir /ffmpeg/olibs/man
mkdir /ffmpeg/olibs/man/man3

Build libgsm

Extract libgsm_1.0.13.orig.tar.gz to /ffmpeg/libraries (License: Proprietary, Home page)

cd /ffmpeg/libraries/gsm-1.0-pl13
make (ignore errors in toast.c)
cp lib/* /ffmpeg/olibs/lib
mkdir /ffmpeg/olibs/include/gsm
cp inc/gsm.h /ffmpeg/olibs/include/gsm/

Build opencore-amr

Extract opencore-amr-0.1.3.tar.gz to /ffmpeg/libraries (License: Apache, Home page)

cd /ffmpeg/libraries/opencore-amr-0.1.3
./configure --prefix=/ffmpeg/olibs --enable-static --disable-shared
make install

Build libogg

Extract libogg-1.3.0.tar.gz to /ffmpeg/libraries (License: Public Domain, Home page)

cd /ffmpeg/libraries/libogg-1.3.0
./configure --prefix=/ffmpeg/olibs --enable-static --disable-shared
make install

Build libvorbis

Extract libvorbis-1.3.3.tar.gz to /ffmpeg/libraries (License: Public Domain, Home page)

cd /ffmpeg/libraries/libvorbis-1.3.3
./configure --prefix=/ffmpeg/olibs --enable-static --disable-shared
make install

Build libSDL

Extract to /ffmpeg/libraries (License: LGPL v2.1, Home page)
Extract directx-devel.tar.gz to /ffmpeg/libraries/SDL-1.2.13 (Home page)

cd /ffmpeg/libraries/SDL-1.2.15
./configure --prefix=/ffmpeg/olibs --enable-static --enable-shared --enable-joystick=no --enable-cdrom=no
make install
strip --strip-debug /ffmpeg/olibs/bin/SDL.dll

Build libtheora

Extract libtheora-1.1.1.tar.bz2 to /ffmpeg/libraries (License: Public Domain, Home page)

cd /ffmpeg/libraries/libtheora-1.1.1
./configure --prefix=/ffmpeg/olibs --enable-static --disable-shared --disable-oggtest --disable-vorbistest
 --with-ogg=/ffmpeg/olibs --with-vorbis=/ffmpeg/olibs --with-sdl-prefix=/ffmpeg/olibs
make install

Build Speex

Extract speex-1.2rc1.tar.gz to /ffmpeg/libraries (License: Proprietary, Home page)

cd /ffmpeg/libraries/speex-1.2rc1
./configure --prefix=/ffmpeg/olibs --enable-static --disable-shared 
make install

Build LGPL FFmpeg

export PATH=$PATH:/ffmpeg/olibs/bin
mkdir /ffmpeg/ffmpeg_lgpl
mkdir /ffmpeg/ffmpeg_lgpl/src

Extract ffmpeg-0.10.4.tar.gz to /ffmpeg/ffmpeg_lgpl/src (License: LGPL v2.1, Home page)

cd /ffmpeg/ffmpeg_lgpl/src
./configure --prefix=/ffmpeg/Binaries_LGPL --disable-debug --disable-static --enable-shared 
--enable-memalign-hack --enable-avisynth --enable-libgsm --enable-libopencore-amrnb 
--enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libspeex 
--enable-version3 --extra-cflags=-I/ffmpeg/olibs/include --extra-ldflags=-L/ffmpeg/olibs/lib
make install

To decompress the compressed files above, you will need a tool like BitZipper.

Updated August 10, 2012 to reflect the library versions used in Free File Viewer 2012.