shithub: aacdec

Download patch

ref: 4139a363f7759de8928a833de7b7b29613817b1e
parent: fffe3e713df85d20c43ac99b0a475963cbff20b5
author: menno <menno>
date: Thu Dec 26 17:51:12 EST 2002

Small changes
Changed to use multithreaded dll runtime libraries

--- a/aacDECdrop/aacDECdrop/aacDECdrop.dsp
+++ b/aacDECdrop/aacDECdrop/aacDECdrop.dsp
@@ -43,7 +43,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /G6 /MT /GX /O2 /I "..\..\include" /I "..\..\common\libsndfile\src" /I "..\..\common\mp4v2" /I "..\..\common\libsndfile\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /QaxK /Qsox- /Qip /c
+# ADD CPP /nologo /G6 /MD /GX /O2 /I "..\..\include" /I "..\..\common\libsndfile\src" /I "..\..\common\mp4v2" /I "..\..\common\libsndfile\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /QaxK /Qsox- /Qip /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x809 /d "NDEBUG"
--- a/aacDECdrop/aacDECdrop/aacDECdrop.vcproj
+++ b/aacDECdrop/aacDECdrop/aacDECdrop.vcproj
@@ -20,7 +20,7 @@
 			CharacterSet="2">
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalOptions="/QaxK /GA /Qwp_ipo "
+				AdditionalOptions="/QaxK /GA /Qwp_ipo"
 				Optimization="2"
 				GlobalOptimizations="TRUE"
 				InlineFunctionExpansion="1"
@@ -31,7 +31,7 @@
 				AdditionalIncludeDirectories="..\..\include,..\..\common\libsndfile\src,..\..\common\mp4v2,..\..\common\libsndfile\win32"
 				PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\Release/aacDECdrop.pch"
 				AssemblerListingLocation=".\Release/"
@@ -39,7 +39,18 @@
 				ProgramDataBaseFileName=".\Release/"
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="2"
+					GlobalOptimizations="1"
+					InlineFuncExpansion="1"
+					OmitFramePtrs="1"
+					StringPooling="1"
+					RuntimeLibrary="2"
+					BufferSecurityCheck="1"
+					FunctionLevelLinking="1"
+					AllOptions="/c  /I &quot;..\..\include&quot; /I &quot;..\..\common\libsndfile\src&quot; /I &quot;..\..\common\mp4v2&quot; /I &quot;..\..\common\libsndfile\win32&quot; /nologo /W3 /O2 /Og /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_WINDOWS&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/aacDECdrop.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd /QaxK /GA /Qwp_ipo"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -51,7 +62,10 @@
 				SuppressStartupBanner="TRUE"
 				IgnoreDefaultLibraryNames=""
 				ProgramDatabaseFile=".\Release/aacDECdrop.pdb"
-				SubSystem="2"/>
+				SubSystem="2">
+				<IntelOptions
+					AllOptions="/NOLOGO /OUT:&quot;.\Release/aacDECdrop.exe&quot; /INCREMENTAL:NO odbc32.lib odbccp32.lib winmm.lib ws2_32.lib /PDB:&quot;.\Release/aacDECdrop.pdb&quot; /SUBSYSTEM:WINDOWS /TLBID:1 /MACHINE:I386 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"
 				PreprocessorDefinitions="NDEBUG"
@@ -99,7 +113,14 @@
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
 				DebugInformationFormat="4"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="0"
+					MinimalRebuild="1"
+					BasicRuntimeChecks="3"
+					RuntimeLibrary="5"
+					AllOptions="/c  /I &quot;..\..\include&quot; /I &quot;..\..\common\libsndfile\src&quot; /I &quot;..\..\common\mp4v2&quot; /I &quot;..\..\common\libsndfile\win32&quot; /ZI /nologo /W3 /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_WINDOWS&quot; /D &quot;_MBCS&quot; /Gm /EHsc /RTC1 /MLd /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/aacDECdrop.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -111,7 +132,10 @@
 				SuppressStartupBanner="TRUE"
 				GenerateDebugInformation="TRUE"
 				ProgramDatabaseFile=".\Debug/aacDECdrop.pdb"
-				SubSystem="2"/>
+				SubSystem="2">
+				<IntelOptions
+					AllOptions="/NOLOGO /OUT:&quot;.\Debug/aacDECdrop.exe&quot; /INCREMENTAL odbc32.lib odbccp32.lib winmm.lib ws2_32.lib svml_disp.lib /DEBUG /PDB:&quot;.\Debug/aacDECdrop.pdb&quot; /SUBSYSTEM:WINDOWS /TLBID:1 /MACHINE:I386 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"
 				PreprocessorDefinitions="_DEBUG"
@@ -140,76 +164,55 @@
 			Name="Source Files"
 			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
 			<File
-				RelativePath="..\audio.c">
-			</File>
+				RelativePath="..\audio.c"/>
 			<File
-				RelativePath="..\decode.c">
-			</File>
+				RelativePath="..\decode.c"/>
 			<File
-				RelativePath="..\decthread.c">
-			</File>
+				RelativePath="..\decthread.c"/>
 			<File
-				RelativePath="..\main.c">
-			</File>
+				RelativePath="..\main.c"/>
 			<File
-				RelativePath="..\misc.c">
-			</File>
+				RelativePath="..\misc.c"/>
 			<File
-				RelativePath="..\wave_out.c">
-			</File>
+				RelativePath="..\wave_out.c"/>
 		</Filter>
 		<Filter
 			Name="Header Files"
 			Filter="h;hpp;hxx;hm;inl">
 			<File
-				RelativePath="..\audio.h">
-			</File>
+				RelativePath="..\audio.h"/>
 			<File
-				RelativePath="..\decode.h">
-			</File>
+				RelativePath="..\decode.h"/>
 			<File
-				RelativePath="..\decthread.h">
-			</File>
+				RelativePath="..\decthread.h"/>
 			<File
-				RelativePath="..\misc.h">
-			</File>
+				RelativePath="..\misc.h"/>
 			<File
-				RelativePath="..\resource.h">
-			</File>
+				RelativePath="..\resource.h"/>
 			<File
-				RelativePath="..\wave_out.h">
-			</File>
+				RelativePath="..\wave_out.h"/>
 		</Filter>
 		<Filter
 			Name="Resource Files"
 			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
 			<File
-				RelativePath="..\resource\AAC01.bmp">
-			</File>
+				RelativePath="..\resource\AAC01.bmp"/>
 			<File
-				RelativePath="..\resource\AAC01.ico">
-			</File>
+				RelativePath="..\resource\AAC01.ico"/>
 			<File
-				RelativePath="..\resource\AAC02.bmp">
-			</File>
+				RelativePath="..\resource\AAC02.bmp"/>
 			<File
-				RelativePath="..\resource\AAC03.bmp">
-			</File>
+				RelativePath="..\resource\AAC03.bmp"/>
 			<File
-				RelativePath="..\resource\AAC04.bmp">
-			</File>
+				RelativePath="..\resource\AAC04.bmp"/>
 			<File
-				RelativePath="..\resource\AAC05.bmp">
-			</File>
+				RelativePath="..\resource\AAC05.bmp"/>
 			<File
-				RelativePath="..\resource\AAC06.bmp">
-			</File>
+				RelativePath="..\resource\AAC06.bmp"/>
 			<File
-				RelativePath="..\resource\AAC07.bmp">
-			</File>
+				RelativePath="..\resource\AAC07.bmp"/>
 			<File
-				RelativePath="..\resource\AAC08.bmp">
-			</File>
+				RelativePath="..\resource\AAC08.bmp"/>
 			<File
 				RelativePath="..\Script.rc">
 				<FileConfiguration
@@ -227,6 +230,5 @@
 			</File>
 		</Filter>
 	</Files>
-	<Globals>
-	</Globals>
+	<Globals/>
 </VisualStudioProject>
--- a/common/id3lib/libprj/id3lib.dsp
+++ b/common/id3lib/libprj/id3lib.dsp
@@ -40,8 +40,9 @@
 # PROP Output_Dir "Release"
 # PROP Intermediate_Dir "Release"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I ".\\" /I "..\\" /I "..\include" /I "..\include\id3" /I "..\zlib\include" /I "..\win32" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_WINDOWS" /D "HAVE_CONFIG_H" /D "ID3LIB_COMPILATION" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I ".\\" /I "..\\" /I "..\include" /I "..\include\id3" /I "..\zlib\include" /I "..\win32" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_WINDOWS" /D "HAVE_CONFIG_H" /D "ID3LIB_COMPILATION" /YX /FD /c
 # ADD BASE RSC /l 0x809 /d "NDEBUG"
 # ADD RSC /l 0x809 /d "NDEBUG"
 BSC32=bscmake.exe
@@ -63,6 +64,7 @@
 # PROP Output_Dir "Debug"
 # PROP Intermediate_Dir "Debug"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
 # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I ".\\" /I "..\\" /I "..\include" /I "..\include\id3" /I "..\zlib\include" /I "..\win32" /D "_DEBUG" /D "ID3LIB_COMPILATION" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_WINDOWS" /D "HAVE_CONFIG_H" /FR /YX /FD /GZ /c
 # ADD BASE RSC /l 0x809 /d "_DEBUG"
--- a/common/id3lib/libprj/id3lib.vcproj
+++ b/common/id3lib/libprj/id3lib.vcproj
@@ -34,13 +34,23 @@
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
 				DebugInformationFormat="4"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="0"
+					MinimalRebuild="1"
+					BasicRuntimeChecks="3"
+					RuntimeLibrary="1"
+					AllOptions="/c  /I &quot;.\\&quot; /I &quot;..\\&quot; /I &quot;..\include&quot; /I &quot;..\include\id3&quot; /I &quot;..\zlib\include&quot; /I &quot;..\win32&quot; /ZI /nologo /W3 /Od /D &quot;_DEBUG&quot; /D &quot;ID3LIB_COMPILATION&quot; /D &quot;WIN32&quot; /D &quot;_LIB&quot; /D &quot;_WINDOWS&quot; /D &quot;HAVE_CONFIG_H&quot; /D &quot;_MBCS&quot; /Gm /EHsc /RTC1 /MTd /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/id3lib.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /FR&quot;.\Debug/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLibrarianTool"
 				OutputFile="..\id3lib.lib"
-				SuppressStartupBanner="TRUE"/>
+				SuppressStartupBanner="TRUE">
+				<IntelOptions
+					AllOptions="/OUT:&quot;..\id3lib.lib&quot; /NOLOGO"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -70,7 +80,7 @@
 				AdditionalIncludeDirectories=".\,..\,..\include,..\include\id3,..\zlib\include,..\win32"
 				PreprocessorDefinitions="NDEBUG,WIN32,_LIB,_WINDOWS,HAVE_CONFIG_H,ID3LIB_COMPILATION"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\Release/id3lib.pch"
@@ -79,13 +89,26 @@
 				ProgramDataBaseFileName=".\Release/"
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="2"
+					InlineFuncExpansion="1"
+					OmitFramePtrs="1"
+					StringPooling="1"
+					RuntimeLibrary="2"
+					BufferSecurityCheck="1"
+					FunctionLevelLinking="1"
+					AllOptions="/c  /I &quot;.\\&quot; /I &quot;..\\&quot; /I &quot;..\include&quot; /I &quot;..\include\id3&quot; /I &quot;..\zlib\include&quot; /I &quot;..\win32&quot; /nologo /W3 /O2 /Ob1 /Oy /D &quot;NDEBUG&quot; /D &quot;WIN32&quot; /D &quot;_LIB&quot; /D &quot;_WINDOWS&quot; /D &quot;HAVE_CONFIG_H&quot; /D &quot;ID3LIB_COMPILATION&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/id3lib.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLibrarianTool"
 				OutputFile="..\id3lib.lib"
-				SuppressStartupBanner="TRUE"/>
+				SuppressStartupBanner="TRUE">
+				<IntelOptions
+					AllOptions="/OUT:&quot;..\id3lib.lib&quot; /NOLOGO"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -107,149 +130,102 @@
 			Name="Source Files"
 			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
 			<File
-				RelativePath="..\src\c_wrapper.cpp">
-			</File>
+				RelativePath="..\src\c_wrapper.cpp"/>
 			<File
-				RelativePath="..\src\error.cpp">
-			</File>
+				RelativePath="..\src\error.cpp"/>
 			<File
-				RelativePath="..\src\field.cpp">
-			</File>
+				RelativePath="..\src\field.cpp"/>
 			<File
-				RelativePath="..\src\field_binary.cpp">
-			</File>
+				RelativePath="..\src\field_binary.cpp"/>
 			<File
-				RelativePath="..\src\field_integer.cpp">
-			</File>
+				RelativePath="..\src\field_integer.cpp"/>
 			<File
-				RelativePath="..\src\field_string_ascii.cpp">
-			</File>
+				RelativePath="..\src\field_string_ascii.cpp"/>
 			<File
-				RelativePath="..\src\field_string_unicode.cpp">
-			</File>
+				RelativePath="..\src\field_string_unicode.cpp"/>
 			<File
-				RelativePath="..\src\frame.cpp">
-			</File>
+				RelativePath="..\src\frame.cpp"/>
 			<File
-				RelativePath="..\src\frame_parse.cpp">
-			</File>
+				RelativePath="..\src\frame_parse.cpp"/>
 			<File
-				RelativePath="..\src\frame_render.cpp">
-			</File>
+				RelativePath="..\src\frame_render.cpp"/>
 			<File
-				RelativePath="..\src\globals.cpp">
-			</File>
+				RelativePath="..\src\globals.cpp"/>
 			<File
-				RelativePath="..\src\header.cpp">
-			</File>
+				RelativePath="..\src\header.cpp"/>
 			<File
-				RelativePath="..\src\header_frame.cpp">
-			</File>
+				RelativePath="..\src\header_frame.cpp"/>
 			<File
-				RelativePath="..\src\header_tag.cpp">
-			</File>
+				RelativePath="..\src\header_tag.cpp"/>
 			<File
-				RelativePath="..\src\misc_support.cpp">
-			</File>
+				RelativePath="..\src\misc_support.cpp"/>
 			<File
-				RelativePath="..\src\spec.cpp">
-			</File>
+				RelativePath="..\src\spec.cpp"/>
 			<File
-				RelativePath="..\src\tag.cpp">
-			</File>
+				RelativePath="..\src\tag.cpp"/>
 			<File
-				RelativePath="..\src\tag_file.cpp">
-			</File>
+				RelativePath="..\src\tag_file.cpp"/>
 			<File
-				RelativePath="..\src\tag_find.cpp">
-			</File>
+				RelativePath="..\src\tag_find.cpp"/>
 			<File
-				RelativePath="..\src\tag_parse.cpp">
-			</File>
+				RelativePath="..\src\tag_parse.cpp"/>
 			<File
-				RelativePath="..\src\tag_parse_lyrics3.cpp">
-			</File>
+				RelativePath="..\src\tag_parse_lyrics3.cpp"/>
 			<File
-				RelativePath="..\src\tag_parse_v1.cpp">
-			</File>
+				RelativePath="..\src\tag_parse_v1.cpp"/>
 			<File
-				RelativePath="..\src\tag_render.cpp">
-			</File>
+				RelativePath="..\src\tag_render.cpp"/>
 			<File
-				RelativePath="..\src\tag_sync.cpp">
-			</File>
+				RelativePath="..\src\tag_sync.cpp"/>
 			<File
-				RelativePath="..\src\uint28.cpp">
-			</File>
+				RelativePath="..\src\uint28.cpp"/>
 			<File
-				RelativePath="..\src\utils.cpp">
-			</File>
+				RelativePath="..\src\utils.cpp"/>
 		</Filter>
 		<Filter
 			Name="Header Files"
 			Filter="h;hpp;hxx;hm;inl">
 			<File
-				RelativePath="E:\Program Files\Microsoft Visual Studio\VC98\Include\BASETSD.H">
-			</File>
+				RelativePath="E:\Program Files\Microsoft Visual Studio\VC98\Include\BASETSD.H"/>
 			<File
-				RelativePath="..\config.h">
-			</File>
+				RelativePath="..\win32\config.h"/>
 			<File
-				RelativePath="..\win32\config.h">
-			</File>
+				RelativePath="..\config.h"/>
 			<File
-				RelativePath="..\include\id3\error.h">
-			</File>
+				RelativePath="..\include\id3\error.h"/>
 			<File
-				RelativePath="..\include\id3\field.h">
-			</File>
+				RelativePath="..\include\id3\field.h"/>
 			<File
-				RelativePath="..\include\id3\flags.h">
-			</File>
+				RelativePath="..\include\id3\flags.h"/>
 			<File
-				RelativePath="..\include\id3\frame.h">
-			</File>
+				RelativePath="..\include\id3\frame.h"/>
 			<File
-				RelativePath="..\include\id3\globals.h">
-			</File>
+				RelativePath="..\include\id3\globals.h"/>
 			<File
-				RelativePath="..\include\id3\header.h">
-			</File>
+				RelativePath="..\include\id3\header.h"/>
 			<File
-				RelativePath="..\include\id3\header_frame.h">
-			</File>
+				RelativePath="..\include\id3\header_frame.h"/>
 			<File
-				RelativePath="..\include\id3\header_tag.h">
-			</File>
+				RelativePath="..\include\id3\header_tag.h"/>
 			<File
-				RelativePath="..\include\id3.h">
-			</File>
+				RelativePath="..\include\id3.h"/>
 			<File
-				RelativePath="..\include\id3\misc_support.h">
-			</File>
+				RelativePath="..\include\id3\misc_support.h"/>
 			<File
-				RelativePath="..\include\id3\sized_types.h">
-			</File>
+				RelativePath="..\include\id3\sized_types.h"/>
 			<File
-				RelativePath="..\include\id3\spec.h">
-			</File>
+				RelativePath="..\include\id3\spec.h"/>
 			<File
-				RelativePath="..\include\id3\tag.h">
-			</File>
+				RelativePath="..\include\id3\tag.h"/>
 			<File
-				RelativePath="..\include\id3\uint28.h">
-			</File>
+				RelativePath="..\include\id3\uint28.h"/>
 			<File
-				RelativePath="..\include\id3\utils.h">
-			</File>
+				RelativePath="..\include\id3\utils.h"/>
 			<File
-				RelativePath="..\zlib\include\zconf.h">
-			</File>
+				RelativePath="..\zlib\include\zconf.h"/>
 			<File
-				RelativePath="..\zlib\include\zlib.h">
-			</File>
+				RelativePath="..\zlib\include\zlib.h"/>
 		</Filter>
 	</Files>
-	<Globals>
-	</Globals>
+	<Globals/>
 </VisualStudioProject>
--- a/common/id3lib/zlib/prj/zlib.dsp
+++ b/common/id3lib/zlib/prj/zlib.dsp
@@ -42,8 +42,9 @@
 # PROP Output_Dir "Release"
 # PROP Intermediate_Dir "Release"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD BASE RSC /l 0x809
 # ADD RSC /l 0x809
 BSC32=bscmake.exe
@@ -65,6 +66,7 @@
 # PROP Output_Dir "Debug"
 # PROP Intermediate_Dir "Debug"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /FR /YX /FD /c
 # ADD BASE RSC /l 0x809
@@ -88,6 +90,7 @@
 # PROP Output_Dir "Debug"
 # PROP Intermediate_Dir "Debug"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD BASE RSC /l 0x809
@@ -111,6 +114,7 @@
 # PROP Output_Dir "Release"
 # PROP Intermediate_Dir "Release"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD BASE RSC /l 0x809
--- a/common/id3lib/zlib/prj/zlib.vcproj
+++ b/common/id3lib/zlib/prj/zlib.vcproj
@@ -31,13 +31,26 @@
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
 				DebugInformationFormat="1"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="0"
+					InlineFuncExpansion="1"
+					OmitFramePtrs="1"
+					StringPooling="1"
+					RuntimeLibrary="3"
+					BufferSecurityCheck="1"
+					FunctionLevelLinking="1"
+					AllOptions="/c  /I &quot;..\include&quot; /Z7 /nologo /W3 /Od /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_WINDOWS&quot; /GF /FD /EHsc /MDd /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/zlib.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLibrarianTool"
 				OutputFile="..\zlib.lib"
-				SuppressStartupBanner="TRUE"/>
+				SuppressStartupBanner="TRUE">
+				<IntelOptions
+					AllOptions="/OUT:&quot;..\zlib.lib&quot; /NOLOGO"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -75,13 +88,23 @@
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
 				DebugInformationFormat="4"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="0"
+					MinimalRebuild="1"
+					BasicRuntimeChecks="3"
+					RuntimeLibrary="5"
+					AllOptions="/c  /I &quot;..\include&quot; /ZI /nologo /W3 /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_WINDOWS&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /Gm /EHsc /RTC1 /MLd /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/zlib.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /FR&quot;.\Debug/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLibrarianTool"
 				OutputFile=".\Debug\zlib.lib"
-				SuppressStartupBanner="TRUE"/>
+				SuppressStartupBanner="TRUE">
+				<IntelOptions
+					AllOptions="/OUT:&quot;.\Debug\zlib.lib&quot; /NOLOGO"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -112,7 +135,7 @@
 				AdditionalIncludeDirectories="..\include"
 				PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\Release/zlib.pch"
@@ -121,13 +144,27 @@
 				ProgramDataBaseFileName=".\Release/"
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="2"
+					GlobalOptimizations="1"
+					InlineFuncExpansion="1"
+					OmitFramePtrs="1"
+					StringPooling="1"
+					RuntimeLibrary="2"
+					BufferSecurityCheck="1"
+					FunctionLevelLinking="1"
+					AllOptions="/c  /I &quot;..\include&quot; /nologo /W3 /O2 /Og /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_WINDOWS&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/zlib.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLibrarianTool"
 				OutputFile=".\Release\zlib.lib"
-				SuppressStartupBanner="TRUE"/>
+				SuppressStartupBanner="TRUE">
+				<IntelOptions
+					AllOptions="/OUT:&quot;.\Release\zlib.lib&quot; /NOLOGO"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -164,13 +201,26 @@
 				ProgramDataBaseFileName=".\Release/"
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="2"
+					InlineFuncExpansion="1"
+					OmitFramePtrs="1"
+					StringPooling="1"
+					RuntimeLibrary="2"
+					BufferSecurityCheck="1"
+					FunctionLevelLinking="1"
+					AllOptions="/c  /I &quot;..\include&quot; /nologo /W3 /O2 /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_WINDOWS&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/zlib.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLibrarianTool"
 				OutputFile="..\zlib.lib"
-				SuppressStartupBanner="TRUE"/>
+				SuppressStartupBanner="TRUE">
+				<IntelOptions
+					AllOptions="/OUT:&quot;..\zlib.lib&quot; /NOLOGO"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -191,86 +241,60 @@
 			Name="source"
 			Filter="">
 			<File
-				RelativePath="..\src\adler32.c">
-			</File>
+				RelativePath="..\src\adler32.c"/>
 			<File
-				RelativePath="..\src\compress.c">
-			</File>
+				RelativePath="..\src\compress.c"/>
 			<File
-				RelativePath="..\src\crc32.c">
-			</File>
+				RelativePath="..\src\crc32.c"/>
 			<File
-				RelativePath="..\src\deflate.c">
-			</File>
+				RelativePath="..\src\deflate.c"/>
 			<File
-				RelativePath="..\src\gzio.c">
-			</File>
+				RelativePath="..\src\gzio.c"/>
 			<File
-				RelativePath="..\src\infblock.c">
-			</File>
+				RelativePath="..\src\infblock.c"/>
 			<File
-				RelativePath="..\src\infcodes.c">
-			</File>
+				RelativePath="..\src\infcodes.c"/>
 			<File
-				RelativePath="..\src\inffast.c">
-			</File>
+				RelativePath="..\src\inffast.c"/>
 			<File
-				RelativePath="..\src\inflate.c">
-			</File>
+				RelativePath="..\src\inflate.c"/>
 			<File
-				RelativePath="..\src\inftrees.c">
-			</File>
+				RelativePath="..\src\inftrees.c"/>
 			<File
-				RelativePath="..\src\infutil.c">
-			</File>
+				RelativePath="..\src\infutil.c"/>
 			<File
-				RelativePath="..\src\trees.c">
-			</File>
+				RelativePath="..\src\trees.c"/>
 			<File
-				RelativePath="..\src\uncompr.c">
-			</File>
+				RelativePath="..\src\uncompr.c"/>
 			<File
-				RelativePath="..\src\zutil.c">
-			</File>
+				RelativePath="..\src\zutil.c"/>
 		</Filter>
 		<Filter
 			Name="include"
 			Filter="">
 			<File
-				RelativePath="..\include\deflate.h">
-			</File>
+				RelativePath="..\include\deflate.h"/>
 			<File
-				RelativePath="..\include\infblock.h">
-			</File>
+				RelativePath="..\include\infblock.h"/>
 			<File
-				RelativePath="..\include\infcodes.h">
-			</File>
+				RelativePath="..\include\infcodes.h"/>
 			<File
-				RelativePath="..\include\inffast.h">
-			</File>
+				RelativePath="..\include\inffast.h"/>
 			<File
-				RelativePath="..\include\inffixed.h">
-			</File>
+				RelativePath="..\include\inffixed.h"/>
 			<File
-				RelativePath="..\include\inftrees.h">
-			</File>
+				RelativePath="..\include\inftrees.h"/>
 			<File
-				RelativePath="..\include\infutil.h">
-			</File>
+				RelativePath="..\include\infutil.h"/>
 			<File
-				RelativePath="..\include\trees.h">
-			</File>
+				RelativePath="..\include\trees.h"/>
 			<File
-				RelativePath="..\include\zconf.h">
-			</File>
+				RelativePath="..\include\zconf.h"/>
 			<File
-				RelativePath="..\include\zlib.h">
-			</File>
+				RelativePath="..\include\zlib.h"/>
 			<File
-				RelativePath="..\include\zutil.h">
-			</File>
+				RelativePath="..\include\zutil.h"/>
 		</Filter>
 	</Files>
-	<Globals>
-	</Globals>
+	<Globals/>
 </VisualStudioProject>
--- a/common/mp4av/libmp4av_st.dsp
+++ b/common/mp4av/libmp4av_st.dsp
@@ -25,7 +25,7 @@
 # PROP AllowPerConfigDependencies 0
 # PROP Scc_ProjName ""
 # PROP Scc_LocalPath ""
-CPP=cl.exe
+CPP=xicl6.exe
 RSC=rc.exe
 
 !IF  "$(CFG)" == "libmp4av_st - Win32 Release"
@@ -40,14 +40,15 @@
 # PROP Output_Dir "Release"
 # PROP Intermediate_Dir "Release"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\mp4v2" /I ".\\" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\mp4v2" /I ".\\" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
 # ADD BASE RSC /l 0x409 /d "NDEBUG"
 # ADD RSC /l 0x409 /d "NDEBUG"
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LIB32=link.exe -lib
+LIB32=xilink6.exe -lib
 # ADD BASE LIB32 /nologo
 # ADD LIB32 /nologo
 
@@ -63,6 +64,7 @@
 # PROP Output_Dir "Debug"
 # PROP Intermediate_Dir "Debug"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
 # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\mp4v2" /I ".\\" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
 # ADD BASE RSC /l 0x409 /d "_DEBUG"
@@ -70,7 +72,7 @@
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LIB32=link.exe -lib
+LIB32=xilink6.exe -lib
 # ADD BASE LIB32 /nologo
 # ADD LIB32 /nologo
 
--- a/common/mp4av/libmp4av_st.vcproj
+++ b/common/mp4av/libmp4av_st.vcproj
@@ -25,7 +25,7 @@
 				AdditionalIncludeDirectories="..\mp4v2,.\"
 				PreprocessorDefinitions="WIN32,NDEBUG,_LIB"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\Release/libmp4av_st.pch"
@@ -34,13 +34,26 @@
 				ProgramDataBaseFileName=".\Release/"
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="2"
+					InlineFuncExpansion="1"
+					OmitFramePtrs="1"
+					StringPooling="1"
+					RuntimeLibrary="2"
+					BufferSecurityCheck="1"
+					FunctionLevelLinking="1"
+					AllOptions="/c  /I &quot;..\mp4v2&quot; /I &quot;.\\&quot; /nologo /W3 /O2 /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/libmp4av_st.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLibrarianTool"
 				OutputFile=".\Release\libmp4av_st.lib"
-				SuppressStartupBanner="TRUE"/>
+				SuppressStartupBanner="TRUE">
+				<IntelOptions
+					AllOptions="/OUT:&quot;.\Release\libmp4av_st.lib&quot; /NOLOGO"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -79,13 +92,23 @@
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
 				DebugInformationFormat="4"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="0"
+					MinimalRebuild="1"
+					BasicRuntimeChecks="0"
+					RuntimeLibrary="1"
+					AllOptions="/c  /I &quot;..\mp4v2&quot; /I &quot;.\\&quot; /ZI /nologo /W3 /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /Gm /EHsc /MTd /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/libmp4av_st.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLibrarianTool"
 				OutputFile=".\Debug\libmp4av_st.lib"
-				SuppressStartupBanner="TRUE"/>
+				SuppressStartupBanner="TRUE">
+				<IntelOptions
+					AllOptions="/OUT:&quot;.\Debug\libmp4av_st.lib&quot; /NOLOGO"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -107,74 +130,52 @@
 			Name="Source Files"
 			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
 			<File
-				RelativePath=".\aac.cpp">
-			</File>
+				RelativePath=".\aac.cpp"/>
 			<File
-				RelativePath=".\adts.cpp">
-			</File>
+				RelativePath=".\adts.cpp"/>
 			<File
-				RelativePath=".\audio_hinters.cpp">
-			</File>
+				RelativePath=".\audio_hinters.cpp"/>
 			<File
-				RelativePath=".\l16.cpp">
-			</File>
+				RelativePath=".\l16.cpp"/>
 			<File
-				RelativePath=".\mbs.cpp">
-			</File>
+				RelativePath=".\mbs.cpp"/>
 			<File
-				RelativePath=".\mp3.cpp">
-			</File>
+				RelativePath=".\mp3.cpp"/>
 			<File
-				RelativePath=".\mpeg3.cpp">
-			</File>
+				RelativePath=".\mpeg3.cpp"/>
 			<File
-				RelativePath=".\mpeg4.cpp">
-			</File>
+				RelativePath=".\mpeg4.cpp"/>
 			<File
-				RelativePath=".\rfc2250.cpp">
-			</File>
+				RelativePath=".\rfc2250.cpp"/>
 			<File
-				RelativePath=".\rfc3016.cpp">
-			</File>
+				RelativePath=".\rfc3016.cpp"/>
 			<File
-				RelativePath=".\rfc3119.cpp">
-			</File>
+				RelativePath=".\rfc3119.cpp"/>
 			<File
-				RelativePath=".\rfcisma.cpp">
-			</File>
+				RelativePath=".\rfcisma.cpp"/>
 		</Filter>
 		<Filter
 			Name="Header Files"
 			Filter="h;hpp;hxx;hm;inl">
 			<File
-				RelativePath=".\audio_hinters.h">
-			</File>
+				RelativePath=".\audio_hinters.h"/>
 			<File
-				RelativePath=".\mbs.h">
-			</File>
+				RelativePath=".\mbs.h"/>
 			<File
-				RelativePath=".\mp4av.h">
-			</File>
+				RelativePath=".\mp4av.h"/>
 			<File
-				RelativePath=".\mp4av_aac.h">
-			</File>
+				RelativePath=".\mp4av_aac.h"/>
 			<File
-				RelativePath=".\mp4av_adts.h">
-			</File>
+				RelativePath=".\mp4av_adts.h"/>
 			<File
-				RelativePath=".\mp4av_common.h">
-			</File>
+				RelativePath=".\mp4av_common.h"/>
 			<File
-				RelativePath=".\mp4av_hinters.h">
-			</File>
+				RelativePath=".\mp4av_hinters.h"/>
 			<File
-				RelativePath=".\mp4av_mp3.h">
-			</File>
+				RelativePath=".\mp4av_mp3.h"/>
 			<File
-				RelativePath=".\mp4av_mpeg4.h">
-			</File>
+				RelativePath=".\mp4av_mpeg4.h"/>
 		</Filter>
 	</Files>
-	<Globals>
-	</Globals>
+	<Globals/>
 </VisualStudioProject>
--- a/common/mp4v2/isma.cpp
+++ b/common/mp4v2/isma.cpp
@@ -1,827 +1,863 @@
-/*
- * The contents of this file are subject to the Mozilla Public
- * License Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.mozilla.org/MPL/
- * 
- * Software distributed under the License is distributed on an "AS
- * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- * implied. See the License for the specific language governing
- * rights and limitations under the License.
- * 
- * The Original Code is MPEG4IP.
- * 
- * The Initial Developer of the Original Code is Cisco Systems Inc.
- * Portions created by Cisco Systems Inc. are
- * Copyright (C) Cisco Systems Inc. 2001.  All Rights Reserved.
- * 
- * Contributor(s): 
- *		Dave Mackie		dmackie@cisco.com
- */
-
-#include "mp4common.h"
-
-static u_int8_t BifsV2Config[3] = {
-	0x00, 0x00, 0x60 // IsCommandStream = 1, PixelMetric = 1
-};
-
-void MP4File::MakeIsmaCompliant(bool addIsmaComplianceSdp)
-{
-	ProtectWriteOperation("MP4MakeIsmaCompliant");
-
-	if (m_useIsma) {
-		// already done
-		return;
-	}
-	m_useIsma = true;
-
-	// find first audio and/or video tracks
-
-	MP4TrackId audioTrackId = MP4_INVALID_TRACK_ID;
-	try {
-		audioTrackId = FindTrackId(0, MP4_AUDIO_TRACK_TYPE);
-	}
-	catch (MP4Error* e) {
-		delete e;
-	}
-
-	MP4TrackId videoTrackId = MP4_INVALID_TRACK_ID;
-	try {
-		videoTrackId = FindTrackId(0, MP4_VIDEO_TRACK_TYPE);
-	}
-	catch (MP4Error* e) {
-		delete e;
-	}
-
-	u_int64_t fileMsDuration =
-		ConvertFromMovieDuration(GetDuration(), MP4_MSECS_TIME_SCALE);
-
-	// delete any existing OD track
-	if (m_odTrackId != MP4_INVALID_TRACK_ID) {
-		DeleteTrack(m_odTrackId);
-	}
-
-	AddODTrack();
-	SetODProfileLevel(0xFF);
-
-	if (audioTrackId != MP4_INVALID_TRACK_ID) {
-		AddTrackToOd(audioTrackId);
-	}
-
-	if (videoTrackId != MP4_INVALID_TRACK_ID) {
-		AddTrackToOd(videoTrackId);
-	}
-
-	// delete any existing scene track
-	MP4TrackId sceneTrackId = MP4_INVALID_TRACK_ID;
-	try {
-		sceneTrackId = FindTrackId(0, MP4_SCENE_TRACK_TYPE);
-	}
-	catch (MP4Error *e) {
-		delete e;
-	}
-	if (sceneTrackId != MP4_INVALID_TRACK_ID) {
-		DeleteTrack(sceneTrackId);
-	}
-
-	// add scene track
-	sceneTrackId = AddSceneTrack();
-	SetSceneProfileLevel(0xFF);
-	SetGraphicsProfileLevel(0xFF);
-	SetTrackIntegerProperty(sceneTrackId, 
-		"mdia.minf.stbl.stsd.mp4s.esds.decConfigDescr.objectTypeId", 
-		MP4SystemsV2ObjectType);
-	
-	SetTrackESConfiguration(sceneTrackId, 
-		BifsV2Config, sizeof(BifsV2Config));
-
-	u_int8_t* pBytes = NULL;
-	u_int64_t numBytes = 0;
-
-	// write OD Update Command
-	CreateIsmaODUpdateCommandFromFileForFile(
-		m_odTrackId, 
-		audioTrackId, 
-		videoTrackId,
-		&pBytes, 
-		&numBytes);
-
-	WriteSample(m_odTrackId, pBytes, numBytes, fileMsDuration);
-
-	MP4Free(pBytes);
-	pBytes = NULL;
-
-	// write BIFS Scene Replace Command
-	CreateIsmaSceneCommand(
-		MP4_IS_VALID_TRACK_ID(audioTrackId), 
-		MP4_IS_VALID_TRACK_ID(videoTrackId),
-		&pBytes, 
-		&numBytes);
-
-	WriteSample(sceneTrackId, pBytes, numBytes, fileMsDuration);
-
-	MP4Free(pBytes);
-	pBytes = NULL;
-
-	// add session level sdp 
-	CreateIsmaIodFromFile(
-		m_odTrackId, 
-		sceneTrackId, 
-		audioTrackId, 
-		videoTrackId,
-		&pBytes, 
-		&numBytes);
-
-	char* iodBase64 = MP4ToBase64(pBytes, numBytes);
-
-	char* sdpBuf = (char*)MP4Calloc(strlen(iodBase64) + 256);
-
-	if (addIsmaComplianceSdp) {
-		strcpy(sdpBuf, "a=isma-compliance:1,1.0,1\015\012");
-	}
-
-	sprintf(&sdpBuf[strlen(sdpBuf)], 
-		"a=mpeg4-iod: \042data:application/mpeg4-iod;base64,%s\042\015\012",
-		iodBase64);
-
-	SetSessionSdp(sdpBuf);
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("IOD SDP = %s\n", sdpBuf));
-
-	MP4Free(iodBase64);
-	iodBase64 = NULL;
-	MP4Free(pBytes);
-	pBytes = NULL;
-	MP4Free(sdpBuf);
-	sdpBuf = NULL;
-}
-
-static void CloneIntegerProperty(
-	MP4Descriptor* pDest, 
-	MP4DescriptorProperty* pSrc,
-	const char* name)
-{
-	MP4IntegerProperty* pGetProperty;
-	MP4IntegerProperty* pSetProperty;
-
-	pSrc->FindProperty(name, (MP4Property**)&pGetProperty);
-	pDest->FindProperty(name, (MP4Property**)&pSetProperty);
-
-	pSetProperty->SetValue(pGetProperty->GetValue());
-} 
-
-void MP4File::CreateIsmaIodFromFile(
-	MP4TrackId odTrackId,
-	MP4TrackId sceneTrackId,
-	MP4TrackId audioTrackId, 
-	MP4TrackId videoTrackId,
-	u_int8_t** ppBytes,
-	u_int64_t* pNumBytes)
-{
-	MP4Descriptor* pIod = new MP4IODescriptor();
-	pIod->SetTag(MP4IODescrTag);
-	pIod->Generate();
-
-	MP4Atom* pIodsAtom = FindAtom("moov.iods");
-	ASSERT(pIodsAtom);
-	MP4DescriptorProperty* pSrcIod = 
-		(MP4DescriptorProperty*)pIodsAtom->GetProperty(2);
-
-	CloneIntegerProperty(pIod, pSrcIod, "objectDescriptorId");
-	CloneIntegerProperty(pIod, pSrcIod, "ODProfileLevelId");
-	CloneIntegerProperty(pIod, pSrcIod, "sceneProfileLevelId");
-	CloneIntegerProperty(pIod, pSrcIod, "audioProfileLevelId");
-	CloneIntegerProperty(pIod, pSrcIod, "visualProfileLevelId");
-	CloneIntegerProperty(pIod, pSrcIod, "graphicsProfileLevelId");
-
-	// mutate esIds from MP4ESIDIncDescrTag to MP4ESDescrTag
-	MP4DescriptorProperty* pEsProperty;
-	pIod->FindProperty("esIds", (MP4Property**)&pEsProperty);
-	pEsProperty->SetTags(MP4ESDescrTag);
-
-	MP4IntegerProperty* pSetProperty;
-
-	// OD
-	MP4Descriptor* pOdEsd =
-		pEsProperty->AddDescriptor(MP4ESDescrTag);
-	pOdEsd->Generate();
-
-	pOdEsd->FindProperty("ESID", 
-		(MP4Property**)&pSetProperty);
-	pSetProperty->SetValue(m_odTrackId);
-
-	pOdEsd->FindProperty("URLFlag", 
-		(MP4Property**)&pSetProperty);
-	pSetProperty->SetValue(1);
-
-	u_int8_t* pBytes;
-	u_int64_t numBytes;
-
-	CreateIsmaODUpdateCommandFromFileForStream(
-		audioTrackId, 
-		videoTrackId,
-		&pBytes, 
-		&numBytes);
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("OD data =\n"); MP4HexDump(pBytes, numBytes));
-
-	char* odCmdBase64 = MP4ToBase64(pBytes, numBytes);
-
-	char* urlBuf = (char*)MP4Malloc(strlen(odCmdBase64) + 64);
-
-	sprintf(urlBuf, 
-		"data:application/mpeg4-od-au;base64,%s",
-		odCmdBase64);
-
-	MP4StringProperty* pUrlProperty;
-	pOdEsd->FindProperty("URL", 
-		(MP4Property**)&pUrlProperty);
-	pUrlProperty->SetValue(urlBuf);
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("OD data URL = \042%s\042\n", urlBuf));
-
-	MP4Free(odCmdBase64);
-	odCmdBase64 = NULL;
-	MP4Free(pBytes);
-	pBytes = NULL;
-	MP4Free(urlBuf);
-	urlBuf = NULL;
-
-	MP4DescriptorProperty* pSrcDcd = NULL;
-
-	// HACK temporarily point to scene decoder config
-	FindProperty(MakeTrackName(odTrackId, 
-		"mdia.minf.stbl.stsd.mp4s.esds.decConfigDescr"),
-		(MP4Property**)&pSrcDcd);
-	ASSERT(pSrcDcd);
-	MP4Property* pOrgOdEsdProperty = 
-		pOdEsd->GetProperty(8);
-	pOdEsd->SetProperty(8, pSrcDcd);
-
-	// bufferSizeDB needs to be set appropriately
-	MP4BitfieldProperty* pBufferSizeProperty = NULL;
-	pOdEsd->FindProperty("decConfigDescr.bufferSizeDB",
-		(MP4Property**)&pBufferSizeProperty);
-	ASSERT(pBufferSizeProperty);
-	pBufferSizeProperty->SetValue(numBytes);
-
-	// SL config needs to change from 2 (file) to 1 (null)
-	pOdEsd->FindProperty("slConfigDescr.predefined", 
-		(MP4Property**)&pSetProperty);
-	pSetProperty->SetValue(1);
-
-
-	// Scene
-	MP4Descriptor* pSceneEsd =
-		pEsProperty->AddDescriptor(MP4ESDescrTag);
-	pSceneEsd->Generate();
-
-	pSceneEsd->FindProperty("ESID", 
-		(MP4Property**)&pSetProperty);
-	pSetProperty->SetValue(sceneTrackId);
-
-	pSceneEsd->FindProperty("URLFlag", 
-		(MP4Property**)&pSetProperty);
-	pSetProperty->SetValue(1);
-
-	CreateIsmaSceneCommand(
-		MP4_IS_VALID_TRACK_ID(audioTrackId), 
-		MP4_IS_VALID_TRACK_ID(videoTrackId),
-		&pBytes, 
-		&numBytes);
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("Scene data =\n"); MP4HexDump(pBytes, numBytes));
-
-	char *sceneCmdBase64 = MP4ToBase64(pBytes, numBytes);
-
-	urlBuf = (char*)MP4Malloc(strlen(sceneCmdBase64) + 64);
-	sprintf(urlBuf, 
-		"data:application/mpeg4-bifs-au;base64,%s",
-		sceneCmdBase64);
-
-	pSceneEsd->FindProperty("URL", 
-		(MP4Property**)&pUrlProperty);
-	pUrlProperty->SetValue(urlBuf);
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("Scene data URL = \042%s\042\n", urlBuf));
-
-	MP4Free(sceneCmdBase64);
-	sceneCmdBase64 = NULL;
-	MP4Free(urlBuf);
-	urlBuf = NULL;
-	MP4Free(pBytes);
-	pBytes = NULL;
-
-	// HACK temporarily point to scene decoder config
-	FindProperty(MakeTrackName(sceneTrackId, 
-		"mdia.minf.stbl.stsd.mp4s.esds.decConfigDescr"),
-		(MP4Property**)&pSrcDcd);
-	ASSERT(pSrcDcd);
-	MP4Property* pOrgSceneEsdProperty = 
-		pSceneEsd->GetProperty(8);
-	pSceneEsd->SetProperty(8, pSrcDcd);
-
-	// bufferSizeDB needs to be set
-	pBufferSizeProperty = NULL;
-	pSceneEsd->FindProperty("decConfigDescr.bufferSizeDB",
-		(MP4Property**)&pBufferSizeProperty);
-	ASSERT(pBufferSizeProperty);
-	pBufferSizeProperty->SetValue(numBytes);
-
-	// SL config needs to change from 2 (file) to 1 (null)
-	pSceneEsd->FindProperty("slConfigDescr.predefined", 
-		(MP4Property**)&pSetProperty);
-	pSetProperty->SetValue(1);
-
-
-	// finally get the whole thing written to a memory 
-	pIod->WriteToMemory(this, ppBytes, pNumBytes);
-
-
-	// now carefully replace esd properties before destroying
-	pOdEsd->SetProperty(8, pOrgOdEsdProperty);
-	pSceneEsd->SetProperty(8, pOrgSceneEsdProperty);
-
-	delete pIod;
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("IOD data =\n"); MP4HexDump(*ppBytes, *pNumBytes));
-}
-
-void MP4File::CreateIsmaIodFromParams(
-	u_int8_t videoProfile,
-	u_int32_t videoBitrate,
-	u_int8_t* videoConfig,
-	u_int32_t videoConfigLength,
-	u_int8_t audioProfile,
-	u_int32_t audioBitrate,
-	u_int8_t* audioConfig,
-	u_int32_t audioConfigLength,
-	u_int8_t** ppIodBytes,
-	u_int64_t* pIodNumBytes)
-{
-	MP4IntegerProperty* pInt;
-	u_int8_t* pBytes = NULL;
-	u_int64_t numBytes;
-
-	// Create the IOD
-	MP4Descriptor* pIod = new MP4IODescriptor();
-	pIod->SetTag(MP4IODescrTag);
-	pIod->Generate();
-	
-	// Set audio and video profileLevels
-	pIod->FindProperty("audioProfileLevelId", 
-		(MP4Property**)&pInt);
-	pInt->SetValue(audioProfile);
-
-	pIod->FindProperty("visualProfileLevelId", 
-		(MP4Property**)&pInt);
-	pInt->SetValue(videoProfile);
-
-	// Mutate esIds from MP4ESIDIncDescrTag to MP4ESDescrTag
-	MP4DescriptorProperty* pEsProperty;
-	pIod->FindProperty("esIds", (MP4Property**)&pEsProperty);
-	pEsProperty->SetTags(MP4ESDescrTag);
-
-	// Add ES Descriptors
-
-	// Scene
-	CreateIsmaSceneCommand(
-		(audioProfile != 0xFF),
-		(videoProfile != 0xFF),
-		&pBytes, 
-		&numBytes);
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("Scene data =\n"); MP4HexDump(pBytes, numBytes));
-
-	char* sceneCmdBase64 = MP4ToBase64(pBytes, numBytes);
-
-	char* urlBuf = 
-		(char*)MP4Malloc(strlen(sceneCmdBase64) + 64);
-	sprintf(urlBuf, 
-		"data:application/mpeg4-bifs-au;base64,%s",
-		sceneCmdBase64);
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("Scene data URL = \042%s\042\n", urlBuf));
-
-	/* MP4Descriptor* pSceneEsd = */
-		CreateESD(
-			pEsProperty,
-			201,				// esid
-			MP4SystemsV2ObjectType,
-			MP4SceneDescriptionStreamType,
-			numBytes,			// bufferSize
-			numBytes * 8,		// bitrate
-			BifsV2Config,
-			sizeof(BifsV2Config),
-			urlBuf);
-
-	MP4Free(sceneCmdBase64);
-	sceneCmdBase64 = NULL;
-	MP4Free(urlBuf);
-	urlBuf = NULL;
-	MP4Free(pBytes);
-	pBytes = NULL;
-
-    // OD
-    
-	// Video
-	MP4DescriptorProperty* pVideoEsdProperty =
-		new MP4DescriptorProperty();
-    pVideoEsdProperty->SetTags(MP4ESDescrTag);
-
-	/* MP4Descriptor* pVideoEsd = */
-		CreateESD(
-			pVideoEsdProperty,
-			20,					// esid
-			MP4_MPEG4_VIDEO_TYPE,
-			MP4VisualStreamType,
-			videoBitrate / 8,	// bufferSize
-			videoBitrate,
-			videoConfig,
-			videoConfigLength,
-			NULL);
-
-	// Audio
-    MP4DescriptorProperty* pAudioEsdProperty =
-		new MP4DescriptorProperty();
-    pAudioEsdProperty->SetTags(MP4ESDescrTag);
-        
-	/* MP4Descriptor* pAudioEsd = */
-		CreateESD(
-			pAudioEsdProperty,
-			10,					// esid
-			MP4_MPEG4_AUDIO_TYPE,
-			MP4AudioStreamType,
-			audioBitrate / 8, 	// bufferSize
-			audioBitrate,
-			audioConfig,
-			audioConfigLength,
-			NULL);
-	
-	CreateIsmaODUpdateCommandForStream(
-		pAudioEsdProperty,
-		pVideoEsdProperty, 
-		&pBytes,
-		&numBytes);
-
-	// cleanup temporary descriptor properties
-    delete pAudioEsdProperty;
-    delete pVideoEsdProperty;
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("OD data =\n"); MP4HexDump(pBytes, numBytes));
-
-	char* odCmdBase64 = MP4ToBase64(pBytes, numBytes);
-
-	urlBuf = (char*)MP4Malloc(strlen(odCmdBase64) + 64);
-
-	sprintf(urlBuf, 
-		"data:application/mpeg4-od-au;base64,%s",
-		odCmdBase64);
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("OD data URL = \042%s\042\n", urlBuf));
-
-	/* MP4Descriptor* pOdEsd = */
-		CreateESD(
-			pEsProperty,
-			101,
-			MP4SystemsV1ObjectType,
-			MP4ObjectDescriptionStreamType,
-			numBytes,		// bufferSize
-			numBytes * 8,	// bitrate
-			NULL,			// config
-			0,				// configLength
-			urlBuf);
-
-	MP4Free(odCmdBase64);
-	odCmdBase64 = NULL;
-	MP4Free(pBytes);
-	pBytes = NULL;
-	MP4Free(urlBuf);
-	urlBuf = NULL;
-
-	// finally get the whole thing written to a memory 
-	pIod->WriteToMemory(this, ppIodBytes, pIodNumBytes);
-
-	delete pIod;
-
-	VERBOSE_ISMA(GetVerbosity(),
-		printf("IOD data =\n"); MP4HexDump(*ppIodBytes, *pIodNumBytes));
-}
-
-MP4Descriptor* MP4File::CreateESD(
-	MP4DescriptorProperty* pEsProperty,
-	u_int32_t esid,
-	u_int8_t objectType,
-	u_int8_t streamType,
-	u_int32_t bufferSize,
-	u_int32_t bitrate,
-	u_int8_t* pConfig,
-	u_int32_t configLength,
-	char* url)
-{
-	MP4IntegerProperty* pInt;
-	MP4StringProperty* pString;
-	MP4BytesProperty* pBytes;
-
-	MP4Descriptor* pEsd =
-		pEsProperty->AddDescriptor(MP4ESDescrTag);
-	pEsd->Generate();
-
-	pEsd->FindProperty("ESID", 
-		(MP4Property**)&pInt);
-	pInt->SetValue(esid);
-
-	pEsd->FindProperty("decConfigDescr.objectTypeId", 
-		(MP4Property**)&pInt);
-	pInt->SetValue(objectType);
-
-	pEsd->FindProperty("decConfigDescr.streamType", 
-		(MP4Property**)&pInt);
-	pInt->SetValue(streamType);
-
-	pEsd->FindProperty("decConfigDescr.bufferSizeDB", 
-		(MP4Property**)&pInt);
-	pInt->SetValue(bufferSize);
-
-	pEsd->FindProperty("decConfigDescr.maxBitrate", 
-		(MP4Property**)&pInt);
-	pInt->SetValue(bitrate);
-
-	pEsd->FindProperty("decConfigDescr.avgBitrate", 
-		(MP4Property**)&pInt);
-	pInt->SetValue(bitrate);
-	
-	MP4DescriptorProperty* pConfigDescrProperty;
-	pEsd->FindProperty("decConfigDescr.decSpecificInfo",
-		(MP4Property**)&pConfigDescrProperty);
-
-	MP4Descriptor* pConfigDescr =
-		pConfigDescrProperty->AddDescriptor(MP4DecSpecificDescrTag);
-	pConfigDescr->Generate();
-
-	pConfigDescrProperty->FindProperty("decSpecificInfo[0].info",
-		(MP4Property**)&pBytes);
-	pBytes->SetValue(pConfig, configLength);
-
-	pEsd->FindProperty("slConfigDescr.predefined", 
-		(MP4Property**)&pInt);
-	pInt->SetValue(1);
-
-	if (url) {
-		pEsd->FindProperty("URLFlag", 
-			(MP4Property**)&pInt);
-		pInt->SetValue(1);
-
-		pEsd->FindProperty("URL", 
-			(MP4Property**)&pString);
-		pString->SetValue(url);
-	}
-
-	return pEsd;
-}
-
-void MP4File::CreateIsmaODUpdateCommandFromFileForFile(
-	MP4TrackId odTrackId,
-	MP4TrackId audioTrackId, 
-	MP4TrackId videoTrackId,
-	u_int8_t** ppBytes,
-	u_int64_t* pNumBytes)
-{
-	MP4Descriptor* pCommand = CreateODCommand(MP4ODUpdateODCommandTag);
-	pCommand->Generate();
-
-	for (u_int8_t i = 0; i < 2; i++) {
-		MP4TrackId trackId;
-		u_int16_t odId;
-
-		if (i == 0) {
-			trackId = audioTrackId;
-			odId = 10;
-		} else {
-			trackId = videoTrackId;
-			odId = 20;
-		}
-
-		if (trackId == MP4_INVALID_TRACK_ID) {
-			continue;
-		}
-
-		MP4DescriptorProperty* pOdDescrProperty =
-				(MP4DescriptorProperty*)(pCommand->GetProperty(0));
-
-		pOdDescrProperty->SetTags(MP4FileODescrTag);
-
-		MP4Descriptor* pOd =
-			pOdDescrProperty->AddDescriptor(MP4FileODescrTag);
-
-		pOd->Generate();
-
-		MP4BitfieldProperty* pOdIdProperty = NULL;
-		pOd->FindProperty("objectDescriptorId", 
-			(MP4Property**)&pOdIdProperty);
-		pOdIdProperty->SetValue(odId);
-
-		MP4DescriptorProperty* pEsIdsDescriptorProperty = NULL;
-		pOd->FindProperty("esIds", 
-			(MP4Property**)&pEsIdsDescriptorProperty);
-		ASSERT(pEsIdsDescriptorProperty);
-
-		pEsIdsDescriptorProperty->SetTags(MP4ESIDRefDescrTag);
-
-		MP4Descriptor *pRefDescriptor =
-			pEsIdsDescriptorProperty->AddDescriptor(MP4ESIDRefDescrTag);
-		pRefDescriptor->Generate();
-
-		MP4Integer16Property* pRefIndexProperty = NULL;
-		pRefDescriptor->FindProperty("refIndex", 
-			(MP4Property**)&pRefIndexProperty);
-		ASSERT(pRefIndexProperty);
-
-		u_int32_t mpodIndex = FindTrackReference(
-			MakeTrackName(odTrackId, "tref.mpod"), trackId);
-		ASSERT(mpodIndex != 0);
-
-		pRefIndexProperty->SetValue(mpodIndex);
-	}
-
-	pCommand->WriteToMemory(this, ppBytes, pNumBytes);
-
-	delete pCommand;
-}
-
-void MP4File::CreateIsmaODUpdateCommandFromFileForStream(
-	MP4TrackId audioTrackId, 
-	MP4TrackId videoTrackId,
-	u_int8_t** ppBytes,
-	u_int64_t* pNumBytes)
-{
-	MP4DescriptorProperty* pAudioEsd = NULL;
-	MP4Integer8Property* pAudioSLConfig = NULL;
-	MP4DescriptorProperty* pVideoEsd = NULL;
-	MP4Integer8Property* pVideoSLConfig = NULL;
-
-	if (audioTrackId != MP4_INVALID_TRACK_ID) {
-		MP4Atom* pEsdsAtom = 
-			FindAtom(MakeTrackName(audioTrackId, 
-				"mdia.minf.stbl.stsd.mp4a.esds"));
-		ASSERT(pEsdsAtom);
-
-		pAudioEsd = (MP4DescriptorProperty*)(pEsdsAtom->GetProperty(2));
-
-		// SL config needs to change from 2 (file) to 1 (null)
-		pAudioEsd->FindProperty("slConfigDescr.predefined", 
-			(MP4Property**)&pAudioSLConfig);
-		ASSERT(pAudioSLConfig);
-		pAudioSLConfig->SetValue(1);
-	}
-
-	if (videoTrackId != MP4_INVALID_TRACK_ID) {
-		MP4Atom* pEsdsAtom = 
-			FindAtom(MakeTrackName(videoTrackId, 
-				"mdia.minf.stbl.stsd.mp4v.esds"));
-		ASSERT(pEsdsAtom);
-
-		pVideoEsd = (MP4DescriptorProperty*)(pEsdsAtom->GetProperty(2));
-
-		// SL config needs to change from 2 (file) to 1 (null)
-		pVideoEsd->FindProperty("slConfigDescr.predefined", 
-			(MP4Property**)&pVideoSLConfig);
-		ASSERT(pVideoSLConfig);
-		pVideoSLConfig->SetValue(1);
-	}
-
-	CreateIsmaODUpdateCommandForStream(
-		pAudioEsd, pVideoEsd, ppBytes, pNumBytes);
-			
-	// return SL config values to 2 (file)
-	if (pAudioSLConfig) {
-		pAudioSLConfig->SetValue(2);
-	}
-	if (pVideoSLConfig) {
-		pVideoSLConfig->SetValue(2);
-	}
-}
-
-void MP4File::CreateIsmaODUpdateCommandForStream(
-	MP4DescriptorProperty* pAudioEsdProperty, 
-	MP4DescriptorProperty* pVideoEsdProperty,
-	u_int8_t** ppBytes,
-	u_int64_t* pNumBytes)
-{
-	MP4Descriptor* pAudioOd = NULL;
-	MP4Descriptor* pVideoOd = NULL;
-
-	MP4Descriptor* pCommand = 
-		CreateODCommand(MP4ODUpdateODCommandTag);
-	pCommand->Generate();
-
-	for (u_int8_t i = 0; i < 2; i++) {
-		u_int16_t odId;
-		MP4DescriptorProperty* pEsdProperty = NULL;
-
-		if (i == 0) {
-			odId = 10;
-			pEsdProperty = pAudioEsdProperty;
-		} else {
-			odId = 20;
-			pEsdProperty = pVideoEsdProperty;
-		}
-
-		if (pEsdProperty == NULL) {
-			continue;
-		}
-
-		MP4DescriptorProperty* pOdDescrProperty =
-			(MP4DescriptorProperty*)(pCommand->GetProperty(0));
-
-		pOdDescrProperty->SetTags(MP4ODescrTag);
-
-		MP4Descriptor* pOd =
-			pOdDescrProperty->AddDescriptor(MP4ODescrTag);
-		pOd->Generate();
-
-		if (i == 0) {
-			pAudioOd = pOd;
-		} else {
-			pVideoOd = pOd;
-		}
-
-		MP4BitfieldProperty* pOdIdProperty = NULL;
-		pOd->FindProperty("objectDescriptorId", 
-			(MP4Property**)&pOdIdProperty);
-		pOdIdProperty->SetValue(odId);
-
-		delete (MP4DescriptorProperty*)pOd->GetProperty(4);
-		pOd->SetProperty(4, pEsdProperty);
-	}
-
-	// serialize OD command
-	pCommand->WriteToMemory(this, ppBytes, pNumBytes);
-
-	// detach from esd descriptor params
-	if (pAudioOd) {
-		pAudioOd->SetProperty(4, NULL);
-	}
-	if (pVideoOd) {
-		pVideoOd->SetProperty(4, NULL);
-	}
-
-	// then destroy
-	delete pCommand;
-}
-
-void MP4File::CreateIsmaSceneCommand(
-	bool hasAudio,
-	bool hasVideo,
-	u_int8_t** ppBytes,
-	u_int64_t* pNumBytes)
-{
-	// from ISMA 1.0 Tech Spec Appendix E
-	static u_int8_t bifsAudioOnly[] = {
-		0xC0, 0x10, 0x12, 
-		0x81, 0x30, 0x2A, 0x05, 0x6D, 0xC0
-	};
-	static u_int8_t bifsVideoOnly[] = {
-		0xC0, 0x10, 0x12, 
-		0x61, 0x04, 
-			0x1F, 0xC0, 0x00, 0x00, 
-			0x1F, 0xC0, 0x00, 0x00,
-		0x44, 0x28, 0x22, 0x82, 0x9F, 0x80
-	};
-	static u_int8_t bifsAudioVideo[] = {
-		0xC0, 0x10, 0x12, 
-		0x81, 0x30, 0x2A, 0x05, 0x6D, 0x26,
-		0x10, 0x41, 0xFC, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00,
-		0x04, 0x42, 0x82, 0x28, 0x29, 0xF8
-	};
-
-	if (hasAudio && hasVideo) {
-		*pNumBytes = sizeof(bifsAudioVideo);
-		*ppBytes = (u_int8_t*)MP4Malloc(*pNumBytes);
-		memcpy(*ppBytes, bifsAudioVideo, sizeof(bifsAudioVideo));
-
-	} else if (hasAudio) {
-		*pNumBytes = sizeof(bifsAudioOnly);
-		*ppBytes = (u_int8_t*)MP4Malloc(*pNumBytes);
-		memcpy(*ppBytes, bifsAudioOnly, sizeof(bifsAudioOnly));
-
-	} else if (hasVideo) {
-		*pNumBytes = sizeof(bifsVideoOnly);
-		*ppBytes = (u_int8_t*)MP4Malloc(*pNumBytes);
-		memcpy(*ppBytes, bifsVideoOnly, sizeof(bifsVideoOnly));
-	} else {
-		*pNumBytes = 0;
-		*ppBytes = NULL;
-	}
-}	
-
+/*
+ * The contents of this file are subject to the Mozilla Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ * 
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ * 
+ * The Original Code is MPEG4IP.
+ * 
+ * The Initial Developer of the Original Code is Cisco Systems Inc.
+ * Portions created by Cisco Systems Inc. are
+ * Copyright (C) Cisco Systems Inc. 2001.  All Rights Reserved.
+ * 
+ * Contributor(s): 
+ *		Dave Mackie		dmackie@cisco.com
+ */
+
+#include "mp4common.h"
+
+static u_int8_t BifsV2Config[3] = {
+	0x00, 0x00, 0x60 // IsCommandStream = 1, PixelMetric = 1
+};
+
+void MP4File::MakeIsmaCompliant(bool addIsmaComplianceSdp)
+{
+	ProtectWriteOperation("MP4MakeIsmaCompliant");
+
+	if (m_useIsma) {
+		// already done
+		return;
+	}
+	m_useIsma = true;
+
+	// find first audio and/or video tracks
+
+	MP4TrackId audioTrackId = MP4_INVALID_TRACK_ID;
+	try {
+		audioTrackId = FindTrackId(0, MP4_AUDIO_TRACK_TYPE);
+	}
+	catch (MP4Error* e) {
+		delete e;
+	}
+
+	MP4TrackId videoTrackId = MP4_INVALID_TRACK_ID;
+	try {
+		videoTrackId = FindTrackId(0, MP4_VIDEO_TRACK_TYPE);
+	}
+	catch (MP4Error* e) {
+		delete e;
+	}
+
+	u_int64_t fileMsDuration =
+		ConvertFromMovieDuration(GetDuration(), MP4_MSECS_TIME_SCALE);
+
+	// delete any existing OD track
+	if (m_odTrackId != MP4_INVALID_TRACK_ID) {
+		DeleteTrack(m_odTrackId);
+	}
+
+	AddODTrack();
+	SetODProfileLevel(0xFF);
+
+	if (audioTrackId != MP4_INVALID_TRACK_ID) {
+		AddTrackToOd(audioTrackId);
+	}
+
+	if (videoTrackId != MP4_INVALID_TRACK_ID) {
+		AddTrackToOd(videoTrackId);
+	}
+
+	// delete any existing scene track
+	MP4TrackId sceneTrackId = MP4_INVALID_TRACK_ID;
+	try {
+		sceneTrackId = FindTrackId(0, MP4_SCENE_TRACK_TYPE);
+	}
+	catch (MP4Error *e) {
+		delete e;
+	}
+	if (sceneTrackId != MP4_INVALID_TRACK_ID) {
+		DeleteTrack(sceneTrackId);
+	}
+
+	// add scene track
+	sceneTrackId = AddSceneTrack();
+	SetSceneProfileLevel(0xFF);
+	SetGraphicsProfileLevel(0xFF);
+	SetTrackIntegerProperty(sceneTrackId, 
+		"mdia.minf.stbl.stsd.mp4s.esds.decConfigDescr.objectTypeId", 
+		MP4SystemsV2ObjectType);
+	
+	SetTrackESConfiguration(sceneTrackId, 
+		BifsV2Config, sizeof(BifsV2Config));
+
+	u_int8_t* pBytes = NULL;
+	u_int64_t numBytes = 0;
+
+	// write OD Update Command
+	CreateIsmaODUpdateCommandFromFileForFile(
+		m_odTrackId, 
+		audioTrackId, 
+		videoTrackId,
+		&pBytes, 
+		&numBytes);
+
+	WriteSample(m_odTrackId, pBytes, numBytes, fileMsDuration);
+
+	MP4Free(pBytes);
+	pBytes = NULL;
+
+	// write BIFS Scene Replace Command
+	CreateIsmaSceneCommand(
+		MP4_IS_VALID_TRACK_ID(audioTrackId), 
+		MP4_IS_VALID_TRACK_ID(videoTrackId),
+		&pBytes, 
+		&numBytes);
+
+	WriteSample(sceneTrackId, pBytes, numBytes, fileMsDuration);
+
+	MP4Free(pBytes);
+	pBytes = NULL;
+
+	// add session level sdp 
+	CreateIsmaIodFromFile(
+		m_odTrackId, 
+		sceneTrackId, 
+		audioTrackId, 
+		videoTrackId,
+		&pBytes, 
+		&numBytes);
+
+	char* iodBase64 = MP4ToBase64(pBytes, numBytes);
+
+	char* sdpBuf = (char*)MP4Calloc(strlen(iodBase64) + 256);
+
+	if (addIsmaComplianceSdp) {
+		strcpy(sdpBuf, "a=isma-compliance:1,1.0,1\015\012");
+	}
+
+	sprintf(&sdpBuf[strlen(sdpBuf)], 
+		"a=mpeg4-iod: \042data:application/mpeg4-iod;base64,%s\042\015\012",
+		iodBase64);
+
+	SetSessionSdp(sdpBuf);
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("IOD SDP = %s\n", sdpBuf));
+
+	MP4Free(iodBase64);
+	iodBase64 = NULL;
+	MP4Free(pBytes);
+	pBytes = NULL;
+	MP4Free(sdpBuf);
+	sdpBuf = NULL;
+}
+
+static void CloneIntegerProperty(
+	MP4Descriptor* pDest, 
+	MP4DescriptorProperty* pSrc,
+	const char* name)
+{
+	MP4IntegerProperty* pGetProperty;
+	MP4IntegerProperty* pSetProperty;
+
+	pSrc->FindProperty(name, (MP4Property**)&pGetProperty);
+	pDest->FindProperty(name, (MP4Property**)&pSetProperty);
+
+	pSetProperty->SetValue(pGetProperty->GetValue());
+} 
+
+void MP4File::CreateIsmaIodFromFile(
+	MP4TrackId odTrackId,
+	MP4TrackId sceneTrackId,
+	MP4TrackId audioTrackId, 
+	MP4TrackId videoTrackId,
+	u_int8_t** ppBytes,
+	u_int64_t* pNumBytes)
+{
+	MP4Descriptor* pIod = new MP4IODescriptor();
+	pIod->SetTag(MP4IODescrTag);
+	pIod->Generate();
+
+	MP4Atom* pIodsAtom = FindAtom("moov.iods");
+	ASSERT(pIodsAtom);
+	MP4DescriptorProperty* pSrcIod = 
+		(MP4DescriptorProperty*)pIodsAtom->GetProperty(2);
+
+	CloneIntegerProperty(pIod, pSrcIod, "objectDescriptorId");
+	CloneIntegerProperty(pIod, pSrcIod, "ODProfileLevelId");
+	CloneIntegerProperty(pIod, pSrcIod, "sceneProfileLevelId");
+	CloneIntegerProperty(pIod, pSrcIod, "audioProfileLevelId");
+	CloneIntegerProperty(pIod, pSrcIod, "visualProfileLevelId");
+	CloneIntegerProperty(pIod, pSrcIod, "graphicsProfileLevelId");
+
+	// mutate esIds from MP4ESIDIncDescrTag to MP4ESDescrTag
+	MP4DescriptorProperty* pEsProperty;
+	pIod->FindProperty("esIds", (MP4Property**)&pEsProperty);
+	pEsProperty->SetTags(MP4ESDescrTag);
+
+	MP4IntegerProperty* pSetProperty;
+
+	// OD
+	MP4Descriptor* pOdEsd =
+		pEsProperty->AddDescriptor(MP4ESDescrTag);
+	pOdEsd->Generate();
+
+	pOdEsd->FindProperty("ESID", 
+		(MP4Property**)&pSetProperty);
+	pSetProperty->SetValue(m_odTrackId);
+
+	pOdEsd->FindProperty("URLFlag", 
+		(MP4Property**)&pSetProperty);
+	pSetProperty->SetValue(1);
+
+	u_int8_t* pBytes;
+	u_int64_t numBytes;
+
+	CreateIsmaODUpdateCommandFromFileForStream(
+		audioTrackId, 
+		videoTrackId,
+		&pBytes, 
+		&numBytes);
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("OD data =\n"); MP4HexDump(pBytes, numBytes));
+
+	char* odCmdBase64 = MP4ToBase64(pBytes, numBytes);
+
+	char* urlBuf = (char*)MP4Malloc(strlen(odCmdBase64) + 64);
+
+	sprintf(urlBuf, 
+		"data:application/mpeg4-od-au;base64,%s",
+		odCmdBase64);
+
+	MP4StringProperty* pUrlProperty;
+	pOdEsd->FindProperty("URL", 
+		(MP4Property**)&pUrlProperty);
+	pUrlProperty->SetValue(urlBuf);
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("OD data URL = \042%s\042\n", urlBuf));
+
+	MP4Free(odCmdBase64);
+	odCmdBase64 = NULL;
+	MP4Free(pBytes);
+	pBytes = NULL;
+	MP4Free(urlBuf);
+	urlBuf = NULL;
+
+	MP4DescriptorProperty* pSrcDcd = NULL;
+
+	// HACK temporarily point to scene decoder config
+	FindProperty(MakeTrackName(odTrackId, 
+		"mdia.minf.stbl.stsd.mp4s.esds.decConfigDescr"),
+		(MP4Property**)&pSrcDcd);
+	ASSERT(pSrcDcd);
+	MP4Property* pOrgOdEsdProperty = 
+		pOdEsd->GetProperty(8);
+	pOdEsd->SetProperty(8, pSrcDcd);
+
+	// bufferSizeDB needs to be set appropriately
+	MP4BitfieldProperty* pBufferSizeProperty = NULL;
+	pOdEsd->FindProperty("decConfigDescr.bufferSizeDB",
+		(MP4Property**)&pBufferSizeProperty);
+	ASSERT(pBufferSizeProperty);
+	pBufferSizeProperty->SetValue(numBytes);
+
+	// SL config needs to change from 2 (file) to 1 (null)
+	pOdEsd->FindProperty("slConfigDescr.predefined", 
+		(MP4Property**)&pSetProperty);
+	pSetProperty->SetValue(1);
+
+
+	// Scene
+	MP4Descriptor* pSceneEsd =
+		pEsProperty->AddDescriptor(MP4ESDescrTag);
+	pSceneEsd->Generate();
+
+	pSceneEsd->FindProperty("ESID", 
+		(MP4Property**)&pSetProperty);
+	pSetProperty->SetValue(sceneTrackId);
+
+	pSceneEsd->FindProperty("URLFlag", 
+		(MP4Property**)&pSetProperty);
+	pSetProperty->SetValue(1);
+
+	CreateIsmaSceneCommand(
+		MP4_IS_VALID_TRACK_ID(audioTrackId), 
+		MP4_IS_VALID_TRACK_ID(videoTrackId),
+		&pBytes, 
+		&numBytes);
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("Scene data =\n"); MP4HexDump(pBytes, numBytes));
+
+	char *sceneCmdBase64 = MP4ToBase64(pBytes, numBytes);
+
+	urlBuf = (char*)MP4Malloc(strlen(sceneCmdBase64) + 64);
+	sprintf(urlBuf, 
+		"data:application/mpeg4-bifs-au;base64,%s",
+		sceneCmdBase64);
+
+	pSceneEsd->FindProperty("URL", 
+		(MP4Property**)&pUrlProperty);
+	pUrlProperty->SetValue(urlBuf);
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("Scene data URL = \042%s\042\n", urlBuf));
+
+	MP4Free(sceneCmdBase64);
+	sceneCmdBase64 = NULL;
+	MP4Free(urlBuf);
+	urlBuf = NULL;
+	MP4Free(pBytes);
+	pBytes = NULL;
+
+	// HACK temporarily point to scene decoder config
+	FindProperty(MakeTrackName(sceneTrackId, 
+		"mdia.minf.stbl.stsd.mp4s.esds.decConfigDescr"),
+		(MP4Property**)&pSrcDcd);
+	ASSERT(pSrcDcd);
+	MP4Property* pOrgSceneEsdProperty = 
+		pSceneEsd->GetProperty(8);
+	pSceneEsd->SetProperty(8, pSrcDcd);
+
+	// bufferSizeDB needs to be set
+	pBufferSizeProperty = NULL;
+	pSceneEsd->FindProperty("decConfigDescr.bufferSizeDB",
+		(MP4Property**)&pBufferSizeProperty);
+	ASSERT(pBufferSizeProperty);
+	pBufferSizeProperty->SetValue(numBytes);
+
+	// SL config needs to change from 2 (file) to 1 (null)
+	pSceneEsd->FindProperty("slConfigDescr.predefined", 
+		(MP4Property**)&pSetProperty);
+	pSetProperty->SetValue(1);
+
+
+	// finally get the whole thing written to a memory 
+	pIod->WriteToMemory(this, ppBytes, pNumBytes);
+
+
+	// now carefully replace esd properties before destroying
+	pOdEsd->SetProperty(8, pOrgOdEsdProperty);
+	pSceneEsd->SetProperty(8, pOrgSceneEsdProperty);
+
+	delete pIod;
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("IOD data =\n"); MP4HexDump(*ppBytes, *pNumBytes));
+}
+
+void MP4File::CreateIsmaIodFromParams(
+	u_int8_t videoProfile,
+	u_int32_t videoBitrate,
+	u_int8_t* videoConfig,
+	u_int32_t videoConfigLength,
+	u_int8_t audioProfile,
+	u_int32_t audioBitrate,
+	u_int8_t* audioConfig,
+	u_int32_t audioConfigLength,
+	u_int8_t** ppIodBytes,
+	u_int64_t* pIodNumBytes)
+{
+	MP4IntegerProperty* pInt;
+	u_int8_t* pBytes = NULL;
+	u_int64_t numBytes;
+
+	// Create the IOD
+	MP4Descriptor* pIod = new MP4IODescriptor();
+	pIod->SetTag(MP4IODescrTag);
+	pIod->Generate();
+	
+	// Set audio and video profileLevels
+	pIod->FindProperty("audioProfileLevelId", 
+		(MP4Property**)&pInt);
+	pInt->SetValue(audioProfile);
+
+	pIod->FindProperty("visualProfileLevelId", 
+		(MP4Property**)&pInt);
+	pInt->SetValue(videoProfile);
+
+	// Mutate esIds from MP4ESIDIncDescrTag to MP4ESDescrTag
+	MP4DescriptorProperty* pEsProperty;
+	pIod->FindProperty("esIds", (MP4Property**)&pEsProperty);
+	pEsProperty->SetTags(MP4ESDescrTag);
+
+	// Add ES Descriptors
+
+	// Scene
+	CreateIsmaSceneCommand(
+		(audioProfile != 0xFF),
+		(videoProfile != 0xFF),
+		&pBytes, 
+		&numBytes);
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("Scene data =\n"); MP4HexDump(pBytes, numBytes));
+
+	char* sceneCmdBase64 = MP4ToBase64(pBytes, numBytes);
+
+	char* urlBuf = 
+		(char*)MP4Malloc(strlen(sceneCmdBase64) + 64);
+	sprintf(urlBuf, 
+		"data:application/mpeg4-bifs-au;base64,%s",
+		sceneCmdBase64);
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("Scene data URL = \042%s\042\n", urlBuf));
+
+	/* MP4Descriptor* pSceneEsd = */
+		CreateESD(
+			pEsProperty,
+			201,				// esid
+			MP4SystemsV2ObjectType,
+			MP4SceneDescriptionStreamType,
+			numBytes,			// bufferSize
+			numBytes * 8,		// bitrate
+			BifsV2Config,
+			sizeof(BifsV2Config),
+			urlBuf);
+
+	MP4Free(sceneCmdBase64);
+	sceneCmdBase64 = NULL;
+	MP4Free(urlBuf);
+	urlBuf = NULL;
+	MP4Free(pBytes);
+	pBytes = NULL;
+
+    // OD
+    
+	// Video
+	MP4DescriptorProperty* pVideoEsdProperty =
+		new MP4DescriptorProperty();
+    pVideoEsdProperty->SetTags(MP4ESDescrTag);
+
+	/* MP4Descriptor* pVideoEsd = */
+		CreateESD(
+			pVideoEsdProperty,
+			20,					// esid
+			MP4_MPEG4_VIDEO_TYPE,
+			MP4VisualStreamType,
+			videoBitrate / 8,	// bufferSize
+			videoBitrate,
+			videoConfig,
+			videoConfigLength,
+			NULL);
+
+	// Audio
+    MP4DescriptorProperty* pAudioEsdProperty =
+		new MP4DescriptorProperty();
+    pAudioEsdProperty->SetTags(MP4ESDescrTag);
+        
+	/* MP4Descriptor* pAudioEsd = */
+		CreateESD(
+			pAudioEsdProperty,
+			10,					// esid
+			MP4_MPEG4_AUDIO_TYPE,
+			MP4AudioStreamType,
+			audioBitrate / 8, 	// bufferSize
+			audioBitrate,
+			audioConfig,
+			audioConfigLength,
+			NULL);
+	
+	CreateIsmaODUpdateCommandForStream(
+		pAudioEsdProperty,
+		pVideoEsdProperty, 
+		&pBytes,
+		&numBytes);
+
+	// cleanup temporary descriptor properties
+    delete pAudioEsdProperty;
+    delete pVideoEsdProperty;
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("OD data =\n"); MP4HexDump(pBytes, numBytes));
+
+	char* odCmdBase64 = MP4ToBase64(pBytes, numBytes);
+
+	urlBuf = (char*)MP4Malloc(strlen(odCmdBase64) + 64);
+
+	sprintf(urlBuf, 
+		"data:application/mpeg4-od-au;base64,%s",
+		odCmdBase64);
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("OD data URL = \042%s\042\n", urlBuf));
+
+	/* MP4Descriptor* pOdEsd = */
+		CreateESD(
+			pEsProperty,
+			101,
+			MP4SystemsV1ObjectType,
+			MP4ObjectDescriptionStreamType,
+			numBytes,		// bufferSize
+			numBytes * 8,	// bitrate
+			NULL,			// config
+			0,				// configLength
+			urlBuf);
+
+	MP4Free(odCmdBase64);
+	odCmdBase64 = NULL;
+	MP4Free(pBytes);
+	pBytes = NULL;
+	MP4Free(urlBuf);
+	urlBuf = NULL;
+
+	// finally get the whole thing written to a memory 
+	pIod->WriteToMemory(this, ppIodBytes, pIodNumBytes);
+
+	delete pIod;
+
+	VERBOSE_ISMA(GetVerbosity(),
+		printf("IOD data =\n"); MP4HexDump(*ppIodBytes, *pIodNumBytes));
+}
+
+MP4Descriptor* MP4File::CreateESD(
+	MP4DescriptorProperty* pEsProperty,
+	u_int32_t esid,
+	u_int8_t objectType,
+	u_int8_t streamType,
+	u_int32_t bufferSize,
+	u_int32_t bitrate,
+	u_int8_t* pConfig,
+	u_int32_t configLength,
+	char* url)
+{
+	MP4IntegerProperty* pInt;
+	MP4StringProperty* pString;
+	MP4BytesProperty* pBytes;
+	MP4BitfieldProperty* pBits;
+
+	MP4Descriptor* pEsd =
+		pEsProperty->AddDescriptor(MP4ESDescrTag);
+	pEsd->Generate();
+
+	pEsd->FindProperty("ESID", 
+		(MP4Property**)&pInt);
+	pInt->SetValue(esid);
+
+	pEsd->FindProperty("decConfigDescr.objectTypeId", 
+		(MP4Property**)&pInt);
+	pInt->SetValue(objectType);
+
+	pEsd->FindProperty("decConfigDescr.streamType", 
+		(MP4Property**)&pInt);
+	pInt->SetValue(streamType);
+
+	pEsd->FindProperty("decConfigDescr.bufferSizeDB", 
+		(MP4Property**)&pInt);
+	pInt->SetValue(bufferSize);
+
+	pEsd->FindProperty("decConfigDescr.maxBitrate", 
+		(MP4Property**)&pInt);
+	pInt->SetValue(bitrate);
+
+	pEsd->FindProperty("decConfigDescr.avgBitrate", 
+		(MP4Property**)&pInt);
+	pInt->SetValue(bitrate);
+	
+	MP4DescriptorProperty* pConfigDescrProperty;
+	pEsd->FindProperty("decConfigDescr.decSpecificInfo",
+		(MP4Property**)&pConfigDescrProperty);
+
+	MP4Descriptor* pConfigDescr =
+		pConfigDescrProperty->AddDescriptor(MP4DecSpecificDescrTag);
+	pConfigDescr->Generate();
+
+	pConfigDescrProperty->FindProperty("decSpecificInfo[0].info",
+		(MP4Property**)&pBytes);
+	pBytes->SetValue(pConfig, configLength);
+
+	pEsd->FindProperty("slConfigDescr.predefined", 
+		(MP4Property**)&pInt);
+	// changed 12/5/02 from plugfest to value 0
+	pInt->SetValue(0);
+
+	pEsd->FindProperty("slConfig.useAccessUnitEndFlag",
+			   (MP4Property **)&pBits);
+	pBits->SetValue(1);
+
+	if (url) {
+		pEsd->FindProperty("URLFlag", 
+			(MP4Property**)&pInt);
+		pInt->SetValue(1);
+
+		pEsd->FindProperty("URL", 
+			(MP4Property**)&pString);
+		pString->SetValue(url);
+	}
+
+	return pEsd;
+}
+
+void MP4File::CreateIsmaODUpdateCommandFromFileForFile(
+	MP4TrackId odTrackId,
+	MP4TrackId audioTrackId, 
+	MP4TrackId videoTrackId,
+	u_int8_t** ppBytes,
+	u_int64_t* pNumBytes)
+{
+	MP4Descriptor* pCommand = CreateODCommand(MP4ODUpdateODCommandTag);
+	pCommand->Generate();
+
+	for (u_int8_t i = 0; i < 2; i++) {
+		MP4TrackId trackId;
+		u_int16_t odId;
+
+		if (i == 0) {
+			trackId = audioTrackId;
+			odId = 10;
+		} else {
+			trackId = videoTrackId;
+			odId = 20;
+		}
+
+		if (trackId == MP4_INVALID_TRACK_ID) {
+			continue;
+		}
+
+		MP4DescriptorProperty* pOdDescrProperty =
+				(MP4DescriptorProperty*)(pCommand->GetProperty(0));
+
+		pOdDescrProperty->SetTags(MP4FileODescrTag);
+
+		MP4Descriptor* pOd =
+			pOdDescrProperty->AddDescriptor(MP4FileODescrTag);
+
+		pOd->Generate();
+
+		MP4BitfieldProperty* pOdIdProperty = NULL;
+		pOd->FindProperty("objectDescriptorId", 
+			(MP4Property**)&pOdIdProperty);
+		pOdIdProperty->SetValue(odId);
+
+		MP4DescriptorProperty* pEsIdsDescriptorProperty = NULL;
+		pOd->FindProperty("esIds", 
+			(MP4Property**)&pEsIdsDescriptorProperty);
+		ASSERT(pEsIdsDescriptorProperty);
+
+		pEsIdsDescriptorProperty->SetTags(MP4ESIDRefDescrTag);
+
+		MP4Descriptor *pRefDescriptor =
+			pEsIdsDescriptorProperty->AddDescriptor(MP4ESIDRefDescrTag);
+		pRefDescriptor->Generate();
+
+		MP4Integer16Property* pRefIndexProperty = NULL;
+		pRefDescriptor->FindProperty("refIndex", 
+			(MP4Property**)&pRefIndexProperty);
+		ASSERT(pRefIndexProperty);
+
+		u_int32_t mpodIndex = FindTrackReference(
+			MakeTrackName(odTrackId, "tref.mpod"), trackId);
+		ASSERT(mpodIndex != 0);
+
+		pRefIndexProperty->SetValue(mpodIndex);
+	}
+
+	pCommand->WriteToMemory(this, ppBytes, pNumBytes);
+
+	delete pCommand;
+}
+
+void MP4File::CreateIsmaODUpdateCommandFromFileForStream(
+	MP4TrackId audioTrackId, 
+	MP4TrackId videoTrackId,
+	u_int8_t** ppBytes,
+	u_int64_t* pNumBytes)
+{
+	MP4DescriptorProperty* pAudioEsd = NULL;
+	MP4Integer8Property* pAudioSLConfig = NULL;
+	MP4BitfieldProperty* pAudioAccessUnitEndFlag = NULL;
+	int oldAudioUnitEndFlagValue = 0;
+	MP4DescriptorProperty* pVideoEsd = NULL;
+	MP4Integer8Property* pVideoSLConfig = NULL;
+	MP4BitfieldProperty* pVideoAccessUnitEndFlag = NULL;
+	int oldVideoUnitEndFlagValue = 0;
+
+	if (audioTrackId != MP4_INVALID_TRACK_ID) {
+		MP4Atom* pEsdsAtom = 
+			FindAtom(MakeTrackName(audioTrackId, 
+				"mdia.minf.stbl.stsd.mp4a.esds"));
+		ASSERT(pEsdsAtom);
+
+		pAudioEsd = (MP4DescriptorProperty*)(pEsdsAtom->GetProperty(2));
+
+		// SL config needs to change from 2 (file) to 1 (null)
+		pAudioEsd->FindProperty("slConfigDescr.predefined", 
+			(MP4Property**)&pAudioSLConfig);
+		ASSERT(pAudioSLConfig);
+#if 0
+		// changed 12/05/02 wmay
+		pAudioSLConfig->SetValue(1);
+#else
+		pAudioSLConfig->SetValue(0);
+#endif
+		pAudioEsd->FindProperty("slConfigDescr.useAccessUnitEndFlag",
+					(MP4Property **)&pAudioAccessUnitEndFlag);
+		oldAudioUnitEndFlagValue = 
+		  pAudioAccessUnitEndFlag->GetValue();
+		pAudioAccessUnitEndFlag->SetValue(1);
+	}
+
+	if (videoTrackId != MP4_INVALID_TRACK_ID) {
+		MP4Atom* pEsdsAtom = 
+			FindAtom(MakeTrackName(videoTrackId, 
+				"mdia.minf.stbl.stsd.mp4v.esds"));
+		ASSERT(pEsdsAtom);
+
+		pVideoEsd = (MP4DescriptorProperty*)(pEsdsAtom->GetProperty(2));
+
+		// SL config needs to change from 2 (file) to 1 (null)
+		pVideoEsd->FindProperty("slConfigDescr.predefined", 
+			(MP4Property**)&pVideoSLConfig);
+		ASSERT(pVideoSLConfig);
+#if 0
+		pVideoSLConfig->SetValue(1);
+		// changed 12/05/02 wmay
+#else
+		pVideoSLConfig->SetValue(0);
+#endif
+		pVideoEsd->FindProperty("slConfigDescr.useAccessUnitEndFlag",
+					(MP4Property **)&pVideoAccessUnitEndFlag);
+		oldVideoUnitEndFlagValue = 
+		  pVideoAccessUnitEndFlag->GetValue();
+		pVideoAccessUnitEndFlag->SetValue(1);
+	}
+
+	CreateIsmaODUpdateCommandForStream(
+		pAudioEsd, pVideoEsd, ppBytes, pNumBytes);
+			
+	// return SL config values to 2 (file)
+	if (pAudioSLConfig) {
+		pAudioSLConfig->SetValue(2);
+	}
+	if (pAudioAccessUnitEndFlag) {
+	  pAudioAccessUnitEndFlag->SetValue(oldAudioUnitEndFlagValue );
+	}
+	if (pVideoSLConfig) {
+		pVideoSLConfig->SetValue(2);
+	}
+	if (pVideoAccessUnitEndFlag) {
+	  pVideoAccessUnitEndFlag->SetValue(oldVideoUnitEndFlagValue );
+	}
+}
+
+void MP4File::CreateIsmaODUpdateCommandForStream(
+	MP4DescriptorProperty* pAudioEsdProperty, 
+	MP4DescriptorProperty* pVideoEsdProperty,
+	u_int8_t** ppBytes,
+	u_int64_t* pNumBytes)
+{
+	MP4Descriptor* pAudioOd = NULL;
+	MP4Descriptor* pVideoOd = NULL;
+
+	MP4Descriptor* pCommand = 
+		CreateODCommand(MP4ODUpdateODCommandTag);
+	pCommand->Generate();
+
+	for (u_int8_t i = 0; i < 2; i++) {
+		u_int16_t odId;
+		MP4DescriptorProperty* pEsdProperty = NULL;
+
+		if (i == 0) {
+			odId = 10;
+			pEsdProperty = pAudioEsdProperty;
+		} else {
+			odId = 20;
+			pEsdProperty = pVideoEsdProperty;
+		}
+
+		if (pEsdProperty == NULL) {
+			continue;
+		}
+
+		MP4DescriptorProperty* pOdDescrProperty =
+			(MP4DescriptorProperty*)(pCommand->GetProperty(0));
+
+		pOdDescrProperty->SetTags(MP4ODescrTag);
+
+		MP4Descriptor* pOd =
+			pOdDescrProperty->AddDescriptor(MP4ODescrTag);
+		pOd->Generate();
+
+		if (i == 0) {
+			pAudioOd = pOd;
+		} else {
+			pVideoOd = pOd;
+		}
+
+		MP4BitfieldProperty* pOdIdProperty = NULL;
+		pOd->FindProperty("objectDescriptorId", 
+			(MP4Property**)&pOdIdProperty);
+		pOdIdProperty->SetValue(odId);
+
+		delete (MP4DescriptorProperty*)pOd->GetProperty(4);
+		pOd->SetProperty(4, pEsdProperty);
+	}
+
+	// serialize OD command
+	pCommand->WriteToMemory(this, ppBytes, pNumBytes);
+
+	// detach from esd descriptor params
+	if (pAudioOd) {
+		pAudioOd->SetProperty(4, NULL);
+	}
+	if (pVideoOd) {
+		pVideoOd->SetProperty(4, NULL);
+	}
+
+	// then destroy
+	delete pCommand;
+}
+
+void MP4File::CreateIsmaSceneCommand(
+	bool hasAudio,
+	bool hasVideo,
+	u_int8_t** ppBytes,
+	u_int64_t* pNumBytes)
+{
+	// from ISMA 1.0 Tech Spec Appendix E
+	static u_int8_t bifsAudioOnly[] = {
+		0xC0, 0x10, 0x12, 
+		0x81, 0x30, 0x2A, 0x05, 0x6D, 0xC0
+	};
+	static u_int8_t bifsVideoOnly[] = {
+		0xC0, 0x10, 0x12, 
+		0x61, 0x04, 
+			0x1F, 0xC0, 0x00, 0x00, 
+			0x1F, 0xC0, 0x00, 0x00,
+		0x44, 0x28, 0x22, 0x82, 0x9F, 0x80
+	};
+	static u_int8_t bifsAudioVideo[] = {
+		0xC0, 0x10, 0x12, 
+		0x81, 0x30, 0x2A, 0x05, 0x6D, 0x26,
+		0x10, 0x41, 0xFC, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00,
+		0x04, 0x42, 0x82, 0x28, 0x29, 0xF8
+	};
+
+	if (hasAudio && hasVideo) {
+		*pNumBytes = sizeof(bifsAudioVideo);
+		*ppBytes = (u_int8_t*)MP4Malloc(*pNumBytes);
+		memcpy(*ppBytes, bifsAudioVideo, sizeof(bifsAudioVideo));
+
+	} else if (hasAudio) {
+		*pNumBytes = sizeof(bifsAudioOnly);
+		*ppBytes = (u_int8_t*)MP4Malloc(*pNumBytes);
+		memcpy(*ppBytes, bifsAudioOnly, sizeof(bifsAudioOnly));
+
+	} else if (hasVideo) {
+		*pNumBytes = sizeof(bifsVideoOnly);
+		*ppBytes = (u_int8_t*)MP4Malloc(*pNumBytes);
+		memcpy(*ppBytes, bifsVideoOnly, sizeof(bifsVideoOnly));
+	} else {
+		*pNumBytes = 0;
+		*ppBytes = NULL;
+	}
+}	
+
--- a/common/mp4v2/libmp4v2_st60.dsp
+++ b/common/mp4v2/libmp4v2_st60.dsp
@@ -40,8 +40,9 @@
 # PROP Output_Dir "ST_Release"
 # PROP Intermediate_Dir "ST_Release"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I ".\\" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I ".\\" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD BASE RSC /l 0x409
 # ADD RSC /l 0x409
 BSC32=bscmake.exe
@@ -63,6 +64,7 @@
 # PROP Output_Dir "ST_Debug"
 # PROP Intermediate_Dir "ST_Debug"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I ".\\" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD BASE RSC /l 0x409
--- a/common/mp4v2/libmp4v2_st60.vcproj
+++ b/common/mp4v2/libmp4v2_st60.vcproj
@@ -24,7 +24,7 @@
 				AdditionalIncludeDirectories=".\"
 				PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\ST_Release/libmp4v2_st60.pch"
@@ -40,10 +40,10 @@
 					InlineFuncExpansion="1"
 					OmitFramePtrs="1"
 					StringPooling="1"
-					RuntimeLibrary="0"
+					RuntimeLibrary="2"
 					BufferSecurityCheck="1"
 					FunctionLevelLinking="1"
-					AllOptions="/c  /I &quot;.\\&quot; /nologo /W3 /O2 /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_WINDOWS&quot; /GF /FD /EHsc /MT /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\ST_Release/libmp4v2_st60.pch&quot; /Fo&quot;.\ST_Release/&quot; /Fd&quot;.\ST_Release/&quot; /Gd"
+					AllOptions="/c  /I &quot;.\\&quot; /nologo /W3 /O2 /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_WINDOWS&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\ST_Release/libmp4v2_st60.pch&quot; /Fo&quot;.\ST_Release/&quot; /Fd&quot;.\ST_Release/&quot; /Gd"
 					MSOriginalAdditionalOptions=""/>
 			</Tool>
 			<Tool
--- a/common/mp4v2/mp4.cpp
+++ b/common/mp4v2/mp4.cpp
@@ -2177,19 +2177,19 @@
 {
 	if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
 		try {
-			MP4EditId editId =
+			MP4EditId newEditId =
 				((MP4File*)hFile)->AddTrackEdit(trackId, editId);
 
-			if (editId != MP4_INVALID_EDIT_ID) {
+			if (newEditId != MP4_INVALID_EDIT_ID) {
 				((MP4File*)hFile)->SetTrackEditMediaStart(
-					trackId, editId, startTime);
+					trackId, newEditId, startTime);
 				((MP4File*)hFile)->SetTrackEditDuration(
-					trackId, editId, duration);
+					trackId, newEditId, duration);
 				((MP4File*)hFile)->SetTrackEditDwell(
-					trackId, editId, dwell);
+					trackId, newEditId, dwell);
 			}
 
-			return editId;
+			return newEditId;
 		}
 		catch (MP4Error* e) {
 			PRINT_ERROR(e);
--- a/common/mp4v2/win32_ver.h
+++ b/common/mp4v2/win32_ver.h
@@ -1,2 +1,2 @@
 #define PACKAGE "mpeg4ip"
-#define VERSION "0.9.6.4"
+#define VERSION "0.9.7.2"
--- a/frontend/faad.dsp
+++ b/frontend/faad.dsp
@@ -25,7 +25,7 @@
 # PROP AllowPerConfigDependencies 0
 # PROP Scc_ProjName ""
 # PROP Scc_LocalPath ""
-CPP=cl.exe
+CPP=xicl6.exe
 RSC=rc.exe
 
 !IF  "$(CFG)" == "faad - Win32 Release"
@@ -42,13 +42,13 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../include" /I "../common/mp4v2" /I "../common/faad" /I "../common/libsndfile/src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../include" /I "../common/mp4v2" /I "../common/faad" /I "../common/libsndfile/src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
 # ADD BASE RSC /l 0x413 /d "NDEBUG"
 # ADD RSC /l 0x413 /d "NDEBUG"
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LINK32=link.exe
+LINK32=xilink6.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
 # ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /profile /machine:I386
 
@@ -72,7 +72,7 @@
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LINK32=link.exe
+LINK32=xilink6.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
 # ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
 
--- a/frontend/faad.vcproj
+++ b/frontend/faad.vcproj
@@ -33,15 +33,13 @@
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
 				DebugInformationFormat="4"
-				CompileAs="0"
-				AdditionalOptions="">
+				CompileAs="0">
 				<IntelOptions
 					Optimization="0"
 					MinimalRebuild="1"
 					BasicRuntimeChecks="3"
 					RuntimeLibrary="1"
-					AllOptions="/c  /I &quot;../include&quot; /I &quot;../common/mp4v2&quot; /I &quot;../common/faad&quot; /ZI /nologo /W3 /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /Gm /EHsc /RTC1 /MTd /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/faad.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /Gd"
-					MSOriginalAdditionalOptions=""/>
+					AllOptions="/c  /I &quot;../include&quot; /I &quot;../common/mp4v2&quot; /I &quot;../common/faad&quot; /ZI /nologo /W3 /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /Gm /EHsc /RTC1 /MTd /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/faad.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /Gd"/>
 			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
@@ -56,8 +54,7 @@
 				ProgramDatabaseFile=".\Debug/faad.pdb"
 				SubSystem="1">
 				<IntelOptions
-					AllOptions="/NOLOGO /OUT:&quot;.\Debug/faad.exe&quot; /INCREMENTAL ws2_32.lib odbc32.lib odbccp32.lib /DEBUG /PDB:&quot;.\Debug/faad.pdb&quot; /SUBSYSTEM:CONSOLE /TLBID:1 /MACHINE:I386 &quot;e:\aac\cvsroot\faad2\libfaad\Debug\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Debug\libmp4v2_st60.lib&quot; &quot;e:\aac\cvsroot\faad2\libfaad\Debug\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Debug\libmp4v2_st60.lib&quot; kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
-					MSOriginalAdditionalOptions="/MACHINE:I386 &quot;e:\aac\cvsroot\faad2\libfaad\Debug\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Debug\libmp4v2_st60.lib&quot; &quot;e:\aac\cvsroot\faad2\libfaad\Debug\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Debug\libmp4v2_st60.lib&quot; &quot;e:\aac\cvsroot\faad2\libfaad\Debug\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Debug\libmp4v2_st60.lib&quot;"/>
+					AllOptions="/NOLOGO /OUT:&quot;.\Debug/faad.exe&quot; /INCREMENTAL ws2_32.lib odbc32.lib odbccp32.lib /DEBUG /PDB:&quot;.\Debug/faad.pdb&quot; /SUBSYSTEM:CONSOLE /TLBID:1 /MACHINE:I386 &quot;e:\aac\cvsroot\faad2\libfaad\Debug\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Debug\libmp4v2_st60.lib&quot; &quot;e:\aac\cvsroot\faad2\libfaad\Debug\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Debug\libmp4v2_st60.lib&quot; &quot;e:\aac\cvsroot\faad2\libfaad\Debug\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Debug\libmp4v2_st60.lib&quot; kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
 			</Tool>
 			<Tool
 				Name="VCMIDLTool"
@@ -97,7 +94,7 @@
 				AdditionalIncludeDirectories="../include,../common/mp4v2,../common/faad"
 				PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\Release/faad.pch"
@@ -106,8 +103,7 @@
 				ProgramDataBaseFileName=".\Release/"
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
-				CompileAs="0"
-				AdditionalOptions="">
+				CompileAs="0">
 				<IntelOptions
 					Optimization="2"
 					GlobalOptimizations="1"
@@ -114,11 +110,10 @@
 					InlineFuncExpansion="1"
 					OmitFramePtrs="1"
 					StringPooling="1"
-					RuntimeLibrary="0"
+					RuntimeLibrary="2"
 					BufferSecurityCheck="1"
 					FunctionLevelLinking="1"
-					AllOptions="/c  /I &quot;../include&quot; /I &quot;../common/mp4v2&quot; /I &quot;../common/faad&quot; /nologo /W3 /O2 /Og /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MT /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/faad.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"
-					MSOriginalAdditionalOptions=""/>
+					AllOptions="/c  /I &quot;../include&quot; /I &quot;../common/mp4v2&quot; /I &quot;../common/faad&quot; /nologo /W3 /O2 /Og /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/faad.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"/>
 			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
@@ -131,8 +126,7 @@
 				SuppressStartupBanner="TRUE"
 				SubSystem="1">
 				<IntelOptions
-					AllOptions="/NOLOGO /OUT:&quot;.\Release/faad.exe&quot; /INCREMENTAL:NO ws2_32.lib /SUBSYSTEM:CONSOLE /TLBID:1 /MACHINE:I386 &quot;e:\aac\cvsroot\faad2\libfaad\Release\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Release\libmp4v2_st60.lib&quot; kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
-					MSOriginalAdditionalOptions="/MACHINE:I386 &quot;e:\aac\cvsroot\faad2\libfaad\Release\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Release\libmp4v2_st60.lib&quot; &quot;e:\aac\cvsroot\faad2\libfaad\Release\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Release\libmp4v2_st60.lib&quot;"/>
+					AllOptions="/NOLOGO /OUT:&quot;.\Release/faad.exe&quot; /INCREMENTAL:NO ws2_32.lib /SUBSYSTEM:CONSOLE /TLBID:1 /MACHINE:I386 &quot;e:\aac\cvsroot\faad2\libfaad\Release\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Release\libmp4v2_st60.lib&quot; &quot;e:\aac\cvsroot\faad2\libfaad\Release\libfaad.lib&quot; &quot;e:\aac\cvsroot\faad2\common\mp4v2\ST_Release\libmp4v2_st60.lib&quot; kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
 			</Tool>
 			<Tool
 				Name="VCMIDLTool"
--- a/libfaad/libfaad.dsp
+++ b/libfaad/libfaad.dsp
@@ -40,8 +40,9 @@
 # PROP Output_Dir "Release"
 # PROP Intermediate_Dir "Release"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /G6 /W3 /GX /O2 /I "fftw" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FFTW_ENABLE_FLOAT" /YX /FD /c
+# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /I "fftw" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FFTW_ENABLE_FLOAT" /YX /FD /c
 # ADD BASE RSC /l 0x413 /d "NDEBUG"
 # ADD RSC /l 0x413 /d "NDEBUG"
 BSC32=bscmake.exe
@@ -63,6 +64,7 @@
 # PROP Output_Dir "Debug"
 # PROP Intermediate_Dir "Debug"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
 # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "fftw" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FFTW_ENABLE_FLOAT" /YX /FD /GZ /c
 # ADD BASE RSC /l 0x413 /d "_DEBUG"
--- a/libfaad/libfaad.vcproj
+++ b/libfaad/libfaad.vcproj
@@ -90,7 +90,7 @@
 				AdditionalIncludeDirectories=""
 				PreprocessorDefinitions="NDEBUG,WIN32,_LIB,FFTW_ENABLE_FLOAT"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\Release/libfaad.pch"
@@ -108,10 +108,10 @@
 					InlineFuncExpansion="1"
 					OmitFramePtrs="1"
 					StringPooling="1"
-					RuntimeLibrary="0"
+					RuntimeLibrary="2"
 					BufferSecurityCheck="1"
 					FunctionLevelLinking="1"
-					AllOptions="/c  /nologo /W3 /O2 /Ob1 /Oy /D &quot;NDEBUG&quot; /D &quot;WIN32&quot; /D &quot;_LIB&quot; /D &quot;FFTW_ENABLE_FLOAT&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MT /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/libfaad.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"
+					AllOptions="/c  /nologo /W3 /O2 /Ob1 /Oy /D &quot;NDEBUG&quot; /D &quot;WIN32&quot; /D &quot;_LIB&quot; /D &quot;FFTW_ENABLE_FLOAT&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/libfaad.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"
 					MSOriginalAdditionalOptions=""/>
 			</Tool>
 			<Tool
--- a/plugins/foo_mp4/foo_mp4.dsp
+++ b/plugins/foo_mp4/foo_mp4.dsp
@@ -43,7 +43,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../include" /I "../../common/mp4v2" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /I "../../common/mp4v2" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x413 /d "NDEBUG"
--- a/plugins/foo_mp4/foo_mp4.vcproj
+++ b/plugins/foo_mp4/foo_mp4.vcproj
@@ -23,7 +23,7 @@
 				AdditionalIncludeDirectories="../../include,../../common/mp4v2"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\Release/foo_mp4.pch"
@@ -32,8 +32,17 @@
 				ProgramDataBaseFileName=".\Release/"
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
-				CompileAs="0"
-				AdditionalOptions=""/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="2"
+					InlineFuncExpansion="1"
+					OmitFramePtrs="1"
+					StringPooling="1"
+					RuntimeLibrary="2"
+					BufferSecurityCheck="1"
+					FunctionLevelLinking="1"
+					AllOptions="/c  /I &quot;../../include&quot; /I &quot;../../common/mp4v2&quot; /nologo /W3 /O2 /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_WINDOWS&quot; /D &quot;_WINDLL&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/foo_mp4.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -45,7 +54,10 @@
 				SuppressStartupBanner="TRUE"
 				ProgramDatabaseFile=".\Release/foo_mp4.pdb"
 				SubSystem="2"
-				ImportLibrary=".\Release/foo_mp4.lib"/>
+				ImportLibrary=".\Release/foo_mp4.lib">
+				<IntelOptions
+					AllOptions="/NOLOGO /DLL /OUT:&quot;.\Release/foo_mp4.dll&quot; /INCREMENTAL:NO ws2_32.lib odbc32.lib odbccp32.lib /PDB:&quot;.\Release/foo_mp4.pdb&quot; /SUBSYSTEM:WINDOWS /TLBID:1 /IMPLIB:&quot;.\Release/foo_mp4.lib&quot; /MACHINE:I386 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"
 				PreprocessorDefinitions="NDEBUG"
@@ -90,8 +102,14 @@
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
 				DebugInformationFormat="4"
-				CompileAs="0"
-				AdditionalOptions=""/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="0"
+					MinimalRebuild="1"
+					BasicRuntimeChecks="3"
+					RuntimeLibrary="1"
+					AllOptions="/c  /I &quot;../../include&quot; /I &quot;../../common/mp4v2&quot; /ZI /nologo /W3 /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_WINDOWS&quot; /D &quot;_WINDLL&quot; /Gm /EHsc /RTC1 /MTd /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/foo_mp4.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -104,7 +122,10 @@
 				GenerateDebugInformation="TRUE"
 				ProgramDatabaseFile=".\Debug/foo_mp4.pdb"
 				SubSystem="2"
-				ImportLibrary=".\Debug/foo_mp4.lib"/>
+				ImportLibrary=".\Debug/foo_mp4.lib">
+				<IntelOptions
+					AllOptions="/NOLOGO /DLL /OUT:&quot;.\Debug/foo_mp4.dll&quot; /INCREMENTAL ws2_32.lib odbc32.lib odbccp32.lib /DEBUG /PDB:&quot;.\Debug/foo_mp4.pdb&quot; /SUBSYSTEM:WINDOWS /TLBID:1 /IMPLIB:&quot;.\Debug/foo_mp4.lib&quot; /MACHINE:I386 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"
 				PreprocessorDefinitions="_DEBUG"
--- a/plugins/in_mp4/in_mp4.dsp
+++ b/plugins/in_mp4/in_mp4.dsp
@@ -25,7 +25,7 @@
 # PROP AllowPerConfigDependencies 0
 # PROP Scc_ProjName ""
 # PROP Scc_LocalPath ""
-CPP=cl.exe
+CPP=xicl6.exe
 MTL=midl.exe
 RSC=rc.exe
 
@@ -43,7 +43,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /I "..\..\common\mp4v2" /I "..\..\common\mp4av" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\common\mp4v2" /I "..\..\common\mp4av" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x413 /d "NDEBUG"
@@ -51,7 +51,7 @@
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LINK32=link.exe
+LINK32=xilink6.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
 # ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
 
@@ -77,7 +77,7 @@
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LINK32=link.exe
+LINK32=xilink6.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
 # ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
 
--- a/plugins/in_mp4/in_mp4.vcproj
+++ b/plugins/in_mp4/in_mp4.vcproj
@@ -32,7 +32,14 @@
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
 				DebugInformationFormat="4"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="0"
+					MinimalRebuild="1"
+					BasicRuntimeChecks="0"
+					RuntimeLibrary="1"
+					AllOptions="/c  /I &quot;..\..\include&quot; /I &quot;..\..\common\mp4v2&quot; /I &quot;..\..\common\mp4av&quot; /ZI /nologo /W3 /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_WINDOWS&quot; /D &quot;_WINDLL&quot; /Gm /EHsc /MTd /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/in_mp4.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -45,7 +52,10 @@
 				GenerateDebugInformation="TRUE"
 				ProgramDatabaseFile=".\Debug/in_mp4.pdb"
 				SubSystem="2"
-				ImportLibrary=".\Debug/in_mp4.lib"/>
+				ImportLibrary=".\Debug/in_mp4.lib">
+				<IntelOptions
+					AllOptions="/NOLOGO /DLL /OUT:&quot;.\Debug/in_mp4.dll&quot; /INCREMENTAL ws2_32.lib odbc32.lib odbccp32.lib /DEBUG /PDB:&quot;.\Debug/in_mp4.pdb&quot; /SUBSYSTEM:WINDOWS /TLBID:1 /IMPLIB:&quot;.\Debug/in_mp4.lib&quot; /MACHINE:I386 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"
 				PreprocessorDefinitions="_DEBUG"
@@ -85,7 +95,7 @@
 				AdditionalIncludeDirectories="..\..\include,..\..\common\mp4v2,..\..\common\mp4av"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\Release/in_mp4.pch"
@@ -94,7 +104,18 @@
 				ProgramDataBaseFileName=".\Release/"
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="2"
+					GlobalOptimizations="1"
+					InlineFuncExpansion="1"
+					OmitFramePtrs="1"
+					StringPooling="1"
+					RuntimeLibrary="2"
+					BufferSecurityCheck="1"
+					FunctionLevelLinking="1"
+					AllOptions="/c  /I &quot;..\..\include&quot; /I &quot;..\..\common\mp4v2&quot; /I &quot;..\..\common\mp4av&quot; /nologo /W3 /O2 /Og /Ob1 /Oy /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_WINDOWS&quot; /D &quot;_WINDLL&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/in_mp4.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -106,7 +127,10 @@
 				SuppressStartupBanner="TRUE"
 				ProgramDatabaseFile=".\Release/in_mp4.pdb"
 				SubSystem="2"
-				ImportLibrary=".\Release/in_mp4.lib"/>
+				ImportLibrary=".\Release/in_mp4.lib">
+				<IntelOptions
+					AllOptions="/NOLOGO /DLL /OUT:&quot;.\Release/in_mp4.dll&quot; /INCREMENTAL:NO ws2_32.lib /PDB:&quot;.\Release/in_mp4.pdb&quot; /SUBSYSTEM:WINDOWS /TLBID:1 /IMPLIB:&quot;.\Release/in_mp4.lib&quot; /MACHINE:I386 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"
 				PreprocessorDefinitions="NDEBUG"
@@ -135,57 +159,42 @@
 			Name="Source Files"
 			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
 			<File
-				RelativePath="aac2mp4.cpp">
-			</File>
+				RelativePath="aac2mp4.cpp"/>
 			<File
-				RelativePath="aacinfo.c">
-			</File>
+				RelativePath="aacinfo.c"/>
 			<File
-				RelativePath=".\config.c">
-			</File>
+				RelativePath=".\config.c"/>
 			<File
-				RelativePath=".\in_mp4.c">
-			</File>
+				RelativePath=".\in_mp4.c"/>
 			<File
-				RelativePath=".\utils.c">
-			</File>
+				RelativePath=".\utils.c"/>
 		</Filter>
 		<Filter
 			Name="Header Files"
 			Filter="h;hpp;hxx;hm;inl">
 			<File
-				RelativePath="aac2mp4.h">
-			</File>
+				RelativePath="aac2mp4.h"/>
 			<File
-				RelativePath="aacinfo.h">
-			</File>
+				RelativePath="aacinfo.h"/>
 			<File
-				RelativePath=".\config.h">
-			</File>
+				RelativePath=".\config.h"/>
 			<File
-				RelativePath="..\..\include\faad.h">
-			</File>
+				RelativePath="..\..\include\faad.h"/>
 			<File
-				RelativePath=".\in2.h">
-			</File>
+				RelativePath=".\in2.h"/>
 			<File
-				RelativePath=".\out.h">
-			</File>
+				RelativePath=".\out.h"/>
 			<File
-				RelativePath="resource.h">
-			</File>
+				RelativePath="resource.h"/>
 			<File
-				RelativePath=".\utils.h">
-			</File>
+				RelativePath=".\utils.h"/>
 		</Filter>
 		<Filter
 			Name="Resource Files"
 			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
 			<File
-				RelativePath=".\in_mp4.rc">
-			</File>
+				RelativePath=".\in_mp4.rc"/>
 		</Filter>
 	</Files>
-	<Globals>
-	</Globals>
+	<Globals/>
 </VisualStudioProject>
--- a/plugins/winamp/in_faad.dsp
+++ b/plugins/winamp/in_faad.dsp
@@ -43,7 +43,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /I "..\..\common\faad" /I "..\..\plugins\winamp" /I "..\..\common\id3lib\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "ID3LIB_COMPILATION" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\common\faad" /I "..\..\plugins\winamp" /I "..\..\common\id3lib\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "ID3LIB_COMPILATION" /YX /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x413 /d "NDEBUG"
--- a/plugins/winamp/in_faad.vcproj
+++ b/plugins/winamp/in_faad.vcproj
@@ -32,7 +32,14 @@
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
 				DebugInformationFormat="4"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="0"
+					MinimalRebuild="1"
+					BasicRuntimeChecks="3"
+					RuntimeLibrary="1"
+					AllOptions="/c  /I &quot;..\..\include&quot; /I &quot;..\..\common\faad&quot; /I &quot;..\..\plugins\winamp&quot; /I &quot;..\..\common\id3lib\include&quot; /ZI /nologo /W3 /Od /D &quot;_DEBUG&quot; /D &quot;WIN32&quot; /D &quot;_WINDOWS&quot; /D &quot;ID3LIB_COMPILATION&quot; /D &quot;_WINDLL&quot; /Gm /EHsc /RTC1 /MTd /YX&quot;StdAfx.h&quot; /Fp&quot;.\Debug/in_faad.pch&quot; /Fo&quot;.\Debug/&quot; /Fd&quot;.\Debug/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -45,7 +52,10 @@
 				GenerateDebugInformation="TRUE"
 				ProgramDatabaseFile=".\Debug/in_faad.pdb"
 				SubSystem="2"
-				ImportLibrary=".\Debug/in_faad.lib"/>
+				ImportLibrary=".\Debug/in_faad.lib">
+				<IntelOptions
+					AllOptions="/NOLOGO /DLL /OUT:&quot;.\Debug/in_faad.dll&quot; /INCREMENTAL ws2_32.lib odbc32.lib odbccp32.lib /DEBUG /PDB:&quot;.\Debug/in_faad.pdb&quot; /SUBSYSTEM:WINDOWS /TLBID:1 /IMPLIB:&quot;.\Debug/in_faad.lib&quot; /MACHINE:I386 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"
 				PreprocessorDefinitions="_DEBUG"
@@ -84,7 +94,7 @@
 				AdditionalIncludeDirectories="..\..\include,..\..\common\faad,..\..\plugins\winamp,..\..\common\id3lib\include"
 				PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;ID3LIB_COMPILATION"
 				StringPooling="TRUE"
-				RuntimeLibrary="0"
+				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderFile=".\Release/in_faad.pch"
@@ -93,7 +103,18 @@
 				ProgramDataBaseFileName=".\Release/"
 				WarningLevel="3"
 				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
+				CompileAs="0">
+				<IntelOptions
+					Optimization="2"
+					GlobalOptimizations="1"
+					InlineFuncExpansion="1"
+					OmitFramePtrs="1"
+					StringPooling="1"
+					RuntimeLibrary="2"
+					BufferSecurityCheck="1"
+					FunctionLevelLinking="1"
+					AllOptions="/c  /I &quot;..\..\include&quot; /I &quot;..\..\common\faad&quot; /I &quot;..\..\plugins\winamp&quot; /I &quot;..\..\common\id3lib\include&quot; /nologo /W3 /O2 /Og /Ob1 /Oy /D &quot;NDEBUG&quot; /D &quot;WIN32&quot; /D &quot;_WINDOWS&quot; /D &quot;ID3LIB_COMPILATION&quot; /D &quot;_WINDLL&quot; /GF /FD /EHsc /MD /GS /Gy /YX&quot;StdAfx.h&quot; /Fp&quot;.\Release/in_faad.pch&quot; /Fo&quot;.\Release/&quot; /Fd&quot;.\Release/&quot; /Gd"/>
+			</Tool>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -105,7 +126,10 @@
 				SuppressStartupBanner="TRUE"
 				ProgramDatabaseFile=".\Release/in_faad.pdb"
 				SubSystem="2"
-				ImportLibrary=".\Release/in_faad.lib"/>
+				ImportLibrary=".\Release/in_faad.lib">
+				<IntelOptions
+					AllOptions="/NOLOGO /DLL /OUT:&quot;.\Release/in_faad.dll&quot; /INCREMENTAL:NO ws2_32.lib /PDB:&quot;.\Release/in_faad.pdb&quot; /SUBSYSTEM:WINDOWS /TLBID:1 /IMPLIB:&quot;.\Release/in_faad.lib&quot; /MACHINE:I386 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"/>
+			</Tool>
 			<Tool
 				Name="VCMIDLTool"
 				PreprocessorDefinitions="NDEBUG"
@@ -134,48 +158,36 @@
 			Name="Source Files"
 			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
 			<File
-				RelativePath="..\..\common\faad\aacinfo.c">
-			</File>
+				RelativePath="..\..\common\faad\aacinfo.c"/>
 			<File
-				RelativePath="..\..\common\faad\filestream.c">
-			</File>
+				RelativePath="..\..\common\faad\filestream.c"/>
 			<File
-				RelativePath="..\..\common\faad\id3v2tag.c">
-			</File>
+				RelativePath="..\..\common\faad\id3v2tag.c"/>
 			<File
-				RelativePath=".\in_faad.c">
-			</File>
+				RelativePath=".\in_faad.c"/>
 		</Filter>
 		<Filter
 			Name="Header Files"
 			Filter="h;hpp;hxx;hm;inl">
 			<File
-				RelativePath="..\..\common\faad\aacinfo.h">
-			</File>
+				RelativePath="..\..\common\faad\aacinfo.h"/>
 			<File
-				RelativePath="..\..\include\faad.h">
-			</File>
+				RelativePath="..\..\include\faad.h"/>
 			<File
-				RelativePath="..\..\common\faad\filestream.h">
-			</File>
+				RelativePath="..\..\common\faad\filestream.h"/>
 			<File
-				RelativePath="..\..\common\faad\id3v2tag.h">
-			</File>
+				RelativePath="..\..\common\faad\id3v2tag.h"/>
 			<File
-				RelativePath=".\in2.h">
-			</File>
+				RelativePath=".\in2.h"/>
 			<File
-				RelativePath=".\out.h">
-			</File>
+				RelativePath=".\out.h"/>
 		</Filter>
 		<Filter
 			Name="Resource Files"
 			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
 			<File
-				RelativePath=".\plugin_dlg.rc">
-			</File>
+				RelativePath=".\plugin_dlg.rc"/>
 		</Filter>
 	</Files>
-	<Globals>
-	</Globals>
+	<Globals/>
 </VisualStudioProject>
--- a/plugins/winamp3/aacInfoLib.dsp
+++ b/plugins/winamp3/aacInfoLib.dsp
@@ -25,7 +25,7 @@
 # PROP AllowPerConfigDependencies 0
 # PROP Scc_ProjName ""
 # PROP Scc_LocalPath ""
-CPP=cl.exe
+CPP=xicl6.exe
 RSC=rc.exe
 
 !IF  "$(CFG)" == "aacInfoLib - Win32 Release"
@@ -40,14 +40,15 @@
 # PROP Output_Dir "Release"
 # PROP Intermediate_Dir "Release"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../faad2/common/faad" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../faad2/common/faad" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
 # ADD BASE RSC /l 0x410 /d "NDEBUG"
 # ADD RSC /l 0x410 /d "NDEBUG"
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LIB32=link.exe -lib
+LIB32=xilink6.exe -lib
 # ADD BASE LIB32 /nologo
 # ADD LIB32 /nologo
 
@@ -63,6 +64,7 @@
 # PROP Output_Dir "Debug"
 # PROP Intermediate_Dir "Debug"
 # PROP Target_Dir ""
+MTL=midl.exe
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
 # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../faad2/common/faad" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
 # ADD BASE RSC /l 0x410 /d "_DEBUG"
@@ -70,7 +72,7 @@
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LIB32=link.exe -lib
+LIB32=xilink6.exe -lib
 # ADD BASE LIB32 /nologo
 # ADD LIB32 /nologo
 
--- a/plugins/winamp3/cnv_FAAD.dsp
+++ b/plugins/winamp3/cnv_FAAD.dsp
@@ -25,7 +25,7 @@
 # PROP AllowPerConfigDependencies 0
 # PROP Scc_ProjName ""
 # PROP Scc_LocalPath ""
-CPP=cl.exe
+CPP=xicl6.exe
 MTL=midl.exe
 RSC=rc.exe
 
@@ -43,7 +43,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CNV_FAAD_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../faad2/common/faad" /I "../../include" /I "../../../faad2/common/mp4v2" /I "SDK" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CNV_FAAD_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../faad2/common/faad" /I "../../include" /I "../../../faad2/common/mp4v2" /I "SDK" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CNV_FAAD_EXPORTS" /YX /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x410 /d "NDEBUG"
@@ -51,7 +51,7 @@
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LINK32=link.exe
+LINK32=xilink6.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
 # ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /machine:I386 /out:"Release/cnv_FAAD.wac"
 
@@ -77,7 +77,7 @@
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
-LINK32=link.exe
+LINK32=xilink6.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
 # ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"D:\Programmi\Winamp3\Wacs\cnv_FAAD.wac" /pdbtype:sept
 # SUBTRACT LINK32 /force