Installation instructions for GPAC 0.4.0 on windows platform
last modified: July 2005

0 Foreword
	Compilation has only been tested with MSVC 6, not .NET

	The output directory for all plugins and applications is
		gpac/bin/w32_deb in debug mode
		gpac/bin/w32_rel in release mode
	
	As of 0.2.2, GPAC cannot be compiled without ZLIB. You'd better make sure it is installed locally or on your system (zlib is provided in gpac_extra_libs package)
	
I Extra lib installation

	It is recommended to download and compile all extra libs needed by gpac on windows. Please read carefull the ReadMe file included in the gpac_extra_libs package

	
II GPAC compilation

	open /IDEs/VC6/GPAC.dsw with MSVC6 (GPAC workspace)
	
	NEVER ATTEMPT TO LOAD A PROJECT OUTSIDE THIS WORKSPACE
	
	II.1 Recompiling GPAC
		kibgpac is the core library of the GPAC framework used by all GPAC applications. It is available as a static library and as a dynamic one
		Set the "libgpac_dll" project as the active one
		If you have not installed the SpiderMonkey (JavaScript, libjs) library, remove the GPAC_HAS_SPIDERMONKEY preprocessor variable from the "libgpac" project settings (not "libgpac_dll" !!)
		recompile (libgpac_dll compilation will fail if zlib is not found)

		Note: If you wish to build the fixed-point version of GPAC (not recommended), you will have to modify by hand the file gpac/include/gpac/math.h
		and replace the line
      #define GPAC_NO_FIXED_POINT
    by the line
      #define GPAC_FIXED_POINT
	  
	  !!Do not attempts to enable fixed-point compilation in any other way!!
	
	II.2 Recompiling MP4Box
		MP4Box is GPAC command-line tool for content authoring.
		Set the "MP4Box" project as the active one
		Recompile
		
	II.3 Plugins check
		Before compiling other applications in GPAC you must make sure the projects are configured with the right libraries

		* aac_in
			If you have not installed faad2 library, remove the GPAC_HAS_FAAD preprocessor variable from the aac_in project settings.
			Note that if no aac decoder is installed for gpac you may as well remove the "aac_in" project from the workspace (DEL).

		* mp3_in
			If you have not installed mad library, remove the GPAC_HAS_MAD preprocessor variable from the mp3_in project settings.
			Note that if no mp3 decoder is installed for gpac you may as well remove the "mp3_in" project from the workspace (DEL).

		* xvid_dec
			if you have not installed xvid library, remove the "xvid_dec" project from the workspace (DEL).
		
		* img_in:
			If you have not installed libpng, remove the GPAC_HAS_PNG preprocessor variable from the img_in project settings
			If you have not installed libjpeg, remove the GPAC_HAS_JPEG preprocessor variable from the img_in project settings
			If you have not installed any of the above libraries, you may remove the "img_in" project from the workspace (DEL).

		* amr_float_dec	
			This plugin handles speech coded data using AMR Narrow Band and Wide Band formats. It uses two decoders from the 3GPP consortium available at: 
				AMR Narrowband decoder: http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-610.zip
				AMR Wideband decoder: http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-600.zip

			(The same versions are included in gpac_extra_libs/AMR_NB_FT and  gpac_extra_libs/AMR_WB_FT )

 			To compile this plugin, copy the source code to modules/amr_float_dec/amr_nb_ft and modules/amr_float_dec/amr_wb_ft respectively, WITHOUT OVERWRITING typedefs.h files.
 			You may as well compile with only one of these libraries installed:
			If you have not installed AMR NB, remove the GPAC_HAS_AMR_FT preprocessor variable from the amr_float_dec project settings
			If you have not installed AMR WB, remove the GPAC_HAS_AMR_FT_WB preprocessor variable from the amr_float_dec project settings
 			Otherwise, remove the "amr_float_dec" project from the workspace (DEL).

		* amr_dec		
			This plugin handles speech coded data using AMR Narrow Band format with a fixed-point decoder (suited for embedded platforms). 
			It uses the decoder of the 3GPP consortium (TS26.073) available from http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip. 
			It is the same version included in gpac_extra_libs/AMR_NB with a slight header modifcation.
 			To compile this plugin, copy the source code to modules/amr_dec/amr_nb WITHOUT OVERWRITING typedefs.h file.
 			Otherwise, remove the "amr_dec" project from the workspace (DEL). Note you usually won't need this plugin, the float version of the decoders being much faster.
		
		* ffmpeg_in		
			To install ffmpeg libraries, cf gpac_extra_libs/ReadMe
			if you have not installed ffmpeg libraries (avcodec.lib/dll AND avformat.lib/dll), remove the "ffmpeg_in" project from the workspace (DEL).

		* ft_font
			if you have not installed freetype, simply remove the "ft_font" project from the workspace (DEL).

		* gdip_rend
			To install GDIPLus, either get Microsft PlatformSDK (http://www.microsoft.com/msdownload/platformsdk/sdkupdate/) or read gpac_extra_libs/GDIPlus/install.txt
			if you have not installed GDIPlus or WindowsSDK, remove the "gdip_rend" project from the workspace (DEL).

		* ogg
			if you have not installed libogg library, remove the "ogg" project from the workspace (DEL).
			if you have not installed libvorbis library, remove the GPAC_HAS_VORBIS preprocessor variable from the ogg project settings
			if you have not installed libtheora library, remove the GPAC_HAS_THEORA preprocessor variable from the ogg project settings
			Note that if you have only installed libogg you can also remove the "ogg" project from the workspace, it won't be any usefull.

		* sdl_out:
			GPAC can use SDL library for audio (all clients) and video (MP4Client andwxOsmo4) output. 
			You will need to get SDL 1.2 for windows. Get it at http://www.libsdl.org/download-1.2.php. You need the DEVELOPMENT LIBRARY SDL-devel-1.2.7-VC6.zip 
			Unpack and setup your path or VisualC++ for SDL include and lib directories (you may need to restart VisualC++)
			You will need to modify your VC settings to look for libxml headers and library directories.
			If you don't want to install libSDL or don't plan to use MP4Client or wxOsmo4, simply remove the "sdl_out" project from the workspace (DEL).
			NOTE: SDL is not needed at all on windows, you will still have audio and video support without SDL. The SDL plugin is much slower than the directX plugin 
			when dealing with video since it uses software YUV to RGB conversion.

		* svg_loader:
			the svg reader requires libxml2 for SVG parsing. Win32 binaries of LibXML2 are available on http://www.xmlsoft.org. You will need to modify your VC settings to 
			look for libxml headers and library directories.
			If you don't want to install libxml2 or don't plan to test svg, simply remove the "svg_loader" project from the workspace (DEL).

		NOTE: if you have not installed GDIPlus nor freetype, you won't have text support at all in GPAC.
	
	
	II.4 Recompiling Osmo4
		Osmo4 is the GUI MPEG-4 player of GPAC for the windows platform.
		Set Osmo4 as the active project
		recompile (enabled plugins will be recompiled in the process)
		
	II.5 Recompiling MP4Client
		MP4Client is the command MPEG-4 player of GPAC. 
		Set MP4Client as the active project
		recompile (enabled plugins will be recompiled in the process)

	II.6 Recompiling MP42AVI
		MP42AVI is a tool used to convert BIFS animations (without sounds, image or video) to an uncompressed AVI file or a (sequence of) BMP or RAW files.
		Recompile it only if you think it may be helpfull
		Set MP42AVI as the active project
		recompile (some plugins may be recompiled in the process)

	II.7 Recompiling Osmo4/wxWidgets
		Osmo4 / wxWidgets is the cross-platform GUI MPEG-4 player of GPAC. You must have wxWidgets 2.6.0 installed and configured on your system (this may be tricky. Please 
		make sure you can recompile some sample wxWidgets applications from wxWidgets distribution first).
		Set wxOsmo4 as the active project
		recompile (some plugins may be recompiled in the process). You may need to change the linker settings, depending on your wxWidgets version and config

	II.6 Recompiling Osmozilla
		Osmozilla is GPAC plugin for Mozilla-based browsers, enabling to embed all GPAC supported contents in a web page. Recompile it only if you think it may 
		be helpfull (Set as the active project and recompile)

III Launching the applications

	If you have compiled libgpac with SpiderMonkey (JavaScript) enabled, copy the JS32.dll file in the output directory.
		
	Some applications need to locate the GPAC configuration file called GPAC.cfg. This file is automatically generated by Osmo4 in its directory. It is recommended
to first launch Osmo4 to get a working config file.
	For more information regarding the config file, cf gpac/doc/configuration.html

	You can launch Osmo4 as is, the application should start and be operational right away.
	
	You can use MP4Box as is.
	
	MP4Client needs GPAC configuration file to run. It will by default search for the file in the current directory, and some  hardcoded directories that will likely not work.
	If the config file is not found, a new one is created in the current directory. You can pass a given config file as a parameter (MP4Client -c config_path).
	You can also modify the hardcoded path in MP4Client (gpac/Applications/MP4Client/main.c) to point to gpac output directory and recompile.
	
	MP42AVI needs GPAC configuration file to run. It will by default search for the file in a hardcoded directory that will likely not work. 
	You can pass a given config file as a parameter (MP42AVI -cfg config_path).
	You can also modify the hardcoded path in MP42AVI (gpac/Applications/MP4Client/main.c) to point to gpac output directory and recompile.
	
	Osmozilla cannot be launched without a mozilla-based web browser. You should not try to install it in any other wau than with  the GPAC installer 
	(cf below). Once installed, you may try any test in an html page viewed with your browser, for instance:
      	<embed SRC="myfile.mp4" type="application/mp4" width="120" height="100" />
   To make sure your browser has loaded the osmozilla plugin and to check the mime types supported, try typing "about:plugins" in your browser address bar.

IV Configuration
	
	IV.0 Foreword
		All configuration information is described in gpac/doc/configuration.html, or man gpac.
	
	IV.1 OpenGL
		OpenGL is badly known for performing quite poorly as far as high data rate texturing is involved. This is a big issue when displaying a typical movie and you
		will likely find the GPAC 3D Renderer very slow on your system. If your GPU supports non power of 2 texturing or rectangular texturing (most Win32 drivers do) 
		you shouldn't have any problem with video. Otherwise here are some tips to configure GPAC on your system:
		1- set the "BitmapCopyPixels" option on: some cards perform rather well at direct pixel transfer. If no improvement, set it off.
		2- set the "BitmapCopyPixels" option off and the "EmulatePOW2" option on. This will trick the GL texturing by using only Power Of 2 textures when converting 
		from YUV to RGB. 
		3- If this does not improve video playback, you're only chance is through discussion forums & co to gather info about your system, your GL implementation 
		and how to fine-tune it.

V Misc

	V.1 Scene Generators
		In gpac/applications/generators you will find the code generators for MPEG-4, X3D and SVG scene graphs used in gpac.
		If you want to modify the set of nodes understood by GPAC in encoding/decoding/rendering, you will need those.
		The Scene generators can be recompiled without dependencies to extra libraries nor libgpac library.
		To recompile them, open the related project files (.dsp) and recompile.
		To use them, cf gpac/doc/SceneGenerators
		
	VI.2 V4Studio
		V4Studio is a very simple authoring tool for 2D content. It is not usable but may interest developers. 
		For Installation instructions cf gpac/Applications/V4Studio/install
		
	VI.3 GPAC Installer
		The GPAC installer uses the NSIS installing system. The installation script is gpac/bin/w32_rel/install/GPAC_Install.nsi
		- Before building the installer
			* get NullSoft installer (nsis.sourceforge.net), at least version 2.0
			* make sure the js32.dll is copied in the gpac/bin/w32_rel dir if you have compiled GPAC with SpiderMonkey support, otherwise comment 
			out "..\js32.dll" line from the install script
			* copy gdiplus.dll to gpac/bin/w32_rel/install 
			* make sure avcodec.dll and avformat.dll are copied in gpac/bin/w32_rel if you have built ffmpeg plugin
			* make sure iconv.dll, libxml2.dll, zlib1.dll in gpac/bin/w32_rel if you have compiled libxml2
			
		- Building GPAC installer
			The installer includes Osmo4, MP4Box, Osmozilla and all modules except SDL_out and raw_out. To install, right click on "GPAC_Install.nsi" and compile
			For other configurations, modify the script "GPAC_Install.nsi" to comment out unwanted features
		
