[xiph-commits] r10813 - in trunk: ogg/macosx ogg/macosx/ogg.pbproj oggdsf/build/NSIS/Release oggdsf/src/lib/codecs/cmml/dsfCMMLDecoder oggdsf/src/lib/core/ogg/libOOOggSeek

illiminable at svn.xiph.org illiminable at svn.xiph.org
Sun Feb 12 14:09:56 PST 2006


Author: illiminable
Date: 2006-02-12 14:09:18 -0800 (Sun, 12 Feb 2006)
New Revision: 10813

Added:
   trunk/ogg/macosx/ogg.pbproj/
   trunk/ogg/macosx/ogg.pbproj/project.pbxproj
   trunk/oggdsf/build/NSIS/Release/oggcodecs_release.nsi.bak
   trunk/oggdsf/src/lib/codecs/cmml/dsfCMMLDecoder/CMMLDecodeInputPin.cpp
   trunk/oggdsf/src/lib/codecs/cmml/dsfCMMLDecoder/CMMLDecodeInputPin.h
   trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/AutoOggChainGranuleSeekTable.cpp
   trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/AutoOggChainGranuleSeekTable.h
   trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/IOggDecoderSeek.h
   trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/OggGranuleSeekTable.cpp
   trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/OggGranuleSeekTable.h
Log:
* Merge strays (should be done)

Added: trunk/ogg/macosx/ogg.pbproj/project.pbxproj
===================================================================
--- trunk/ogg/macosx/ogg.pbproj/project.pbxproj	2006-02-12 22:06:51 UTC (rev 10812)
+++ trunk/ogg/macosx/ogg.pbproj/project.pbxproj	2006-02-12 22:09:18 UTC (rev 10813)
@@ -0,0 +1,298 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 38;
+	objects = {
+		014CEA440018CDF011CA2923 = {
+			buildRules = (
+			);
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				OPTIMIZATION_CFLAGS = "-O0";
+			};
+			isa = PBXBuildStyle;
+			name = Development;
+		};
+		014CEA450018CDF011CA2923 = {
+			buildRules = (
+			);
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+			};
+			isa = PBXBuildStyle;
+			name = Deployment;
+		};
+//010
+//011
+//012
+//013
+//014
+//030
+//031
+//032
+//033
+//034
+		034768DFFF38A50411DB9C8B = {
+			children = (
+				034768E0FF38A50411DB9C8B,
+			);
+			isa = PBXGroup;
+			name = Products;
+			refType = 4;
+		};
+		034768E0FF38A50411DB9C8B = {
+			isa = PBXFrameworkReference;
+			path = Ogg.framework;
+			refType = 3;
+		};
+//030
+//031
+//032
+//033
+//034
+//080
+//081
+//082
+//083
+//084
+		0867D690FE84028FC02AAC07 = {
+			buildStyles = (
+				014CEA440018CDF011CA2923,
+				014CEA450018CDF011CA2923,
+			);
+			isa = PBXProject;
+			mainGroup = 0867D691FE84028FC02AAC07;
+			productRefGroup = 034768DFFF38A50411DB9C8B;
+			projectDirPath = "";
+			targets = (
+				0867D69CFE84028FC02AAC07,
+			);
+		};
+		0867D691FE84028FC02AAC07 = {
+			children = (
+				F582555C019164DF01A802FE,
+				F582554F0191644401A802FE,
+				089C1665FE841158C02AAC07,
+				034768DFFF38A50411DB9C8B,
+			);
+			isa = PBXGroup;
+			name = ogg;
+			refType = 4;
+		};
+		0867D69CFE84028FC02AAC07 = {
+			buildPhases = (
+				0867D69DFE84028FC02AAC07,
+				0867D69EFE84028FC02AAC07,
+				0867D69FFE84028FC02AAC07,
+				0867D6A0FE84028FC02AAC07,
+				0867D6A2FE84028FC02AAC07,
+			);
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_SEARCH_PATHS = "";
+				FRAMEWORK_VERSION = A;
+				HEADER_SEARCH_PATHS = "";
+				INSTALL_PATH = /Library/Frameworks;
+				LIBRARY_SEARCH_PATHS = "";
+				OTHER_CFLAGS = "-D__MACOSX__";
+				OTHER_LDFLAGS = "";
+				PRODUCT_NAME = Ogg;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+				WRAPPER_EXTENSION = framework;
+			};
+			dependencies = (
+			);
+			isa = PBXFrameworkTarget;
+			name = Ogg;
+			productInstallPath = /Library/Frameworks;
+			productName = ogg;
+			productReference = 034768E0FF38A50411DB9C8B;
+			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>Ogg</string>
+	<key>CFBundleGetInfoString</key>
+	<string>Enables the manipulation of Ogg bitstreams</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string></string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>Ogg framework</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.11</string>
+	<key>CFBundleSignature</key>
+	<string>Ogg_</string>
+	<key>CFBundleVersion</key>
+	<string>1.11</string>
+	<key>NSPrincipalClass</key>
+	<string></string>
+</dict>
+</plist>
+";
+			shouldUseHeadermap = 1;
+		};
+		0867D69DFE84028FC02AAC07 = {
+			buildActionMask = 2147483647;
+			files = (
+				F5825565019164DF01A802FE,
+				F586EB5C0191DDEA01A802FE,
+			);
+			isa = PBXHeadersBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		0867D69EFE84028FC02AAC07 = {
+			buildActionMask = 2147483647;
+			files = (
+				089C1668FE841158C02AAC07,
+			);
+			isa = PBXResourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		0867D69FFE84028FC02AAC07 = {
+			buildActionMask = 2147483647;
+			files = (
+				F582555A0191644401A802FE,
+				F582555B0191644401A802FE,
+			);
+			isa = PBXSourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		0867D6A0FE84028FC02AAC07 = {
+			buildActionMask = 2147483647;
+			files = (
+			);
+			isa = PBXFrameworksBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		0867D6A2FE84028FC02AAC07 = {
+			buildActionMask = 2147483647;
+			files = (
+			);
+			isa = PBXRezBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		089C1665FE841158C02AAC07 = {
+			children = (
+				089C1666FE841158C02AAC07,
+			);
+			isa = PBXGroup;
+			name = Resources;
+			refType = 4;
+		};
+		089C1666FE841158C02AAC07 = {
+			children = (
+				089C1667FE841158C02AAC07,
+			);
+			isa = PBXVariantGroup;
+			name = InfoPlist.strings;
+			refType = 4;
+		};
+		089C1667FE841158C02AAC07 = {
+			fileEncoding = 10;
+			isa = PBXFileReference;
+			name = English;
+			path = English.lproj/InfoPlist.strings;
+			refType = 4;
+		};
+		089C1668FE841158C02AAC07 = {
+			fileRef = 089C1666FE841158C02AAC07;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//080
+//081
+//082
+//083
+//084
+//F50
+//F51
+//F52
+//F53
+//F54
+		F582554F0191644401A802FE = {
+			children = (
+				F58255530191644401A802FE,
+				F58255540191644401A802FE,
+			);
+			isa = PBXGroup;
+			name = src;
+			path = ../src;
+			refType = 2;
+		};
+		F58255530191644401A802FE = {
+			isa = PBXFileReference;
+			path = bitwise.c;
+			refType = 4;
+		};
+		F58255540191644401A802FE = {
+			isa = PBXFileReference;
+			path = framing.c;
+			refType = 4;
+		};
+		F582555A0191644401A802FE = {
+			fileRef = F58255530191644401A802FE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F582555B0191644401A802FE = {
+			fileRef = F58255540191644401A802FE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F582555C019164DF01A802FE = {
+			children = (
+				F582555E019164DF01A802FE,
+				F582555F019164DF01A802FE,
+			);
+			isa = PBXGroup;
+			name = Headers;
+			path = ../include/ogg;
+			refType = 2;
+		};
+		F582555E019164DF01A802FE = {
+			isa = PBXFileReference;
+			path = ogg.h;
+			refType = 4;
+		};
+		F582555F019164DF01A802FE = {
+			isa = PBXFileReference;
+			path = os_types.h;
+			refType = 4;
+		};
+		F5825565019164DF01A802FE = {
+			fileRef = F582555E019164DF01A802FE;
+			isa = PBXBuildFile;
+			settings = {
+				ATTRIBUTES = (
+					Public,
+				);
+			};
+		};
+		F586EB5C0191DDEA01A802FE = {
+			fileRef = F582555F019164DF01A802FE;
+			isa = PBXBuildFile;
+			settings = {
+				ATTRIBUTES = (
+					Public,
+				);
+			};
+		};
+	};
+	rootObject = 0867D690FE84028FC02AAC07;
+}

Added: trunk/oggdsf/build/NSIS/Release/oggcodecs_release.nsi.bak
===================================================================
--- trunk/oggdsf/build/NSIS/Release/oggcodecs_release.nsi.bak	2006-02-12 22:06:51 UTC (rev 10812)
+++ trunk/oggdsf/build/NSIS/Release/oggcodecs_release.nsi.bak	2006-02-12 22:09:18 UTC (rev 10813)
@@ -0,0 +1,789 @@
+; Script generated by the HM NIS Edit Script Wizard.
+
+; Location of Visual Studio runtime libraries on the compiling system
+;   ************* Change this to match the path where msvcp71.dll and msvcr71.dll live ******************
+!define VS_RUNTIME_LOCATION "c:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin"
+;   *****************************************************************************************************
+
+; HM NIS Edit Wizard helper defines
+!define PRODUCT_NAME "oggcodecs"
+!define PRODUCT_VERSION "0.70.0210"
+!define PRODUCT_PUBLISHER "illiminable"
+!define PRODUCT_WEB_SITE "http://www.illiminable.com/ogg/"
+!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\OOOggDump.exe"
+!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
+!define PRODUCT_UNINST_ROOT_KEY "HKLM"
+!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
+
+
+SetCompressor lzma
+
+; MUI 1.67 compatible ------
+!include "MUI.nsh"
+
+; Include for library registration
+!include "Library.nsh"
+
+; MUI Settings
+!define MUI_ABORTWARNING
+!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
+!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
+
+; Language Selection Dialog Settings
+!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
+!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
+!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
+
+; Welcome page
+!insertmacro MUI_PAGE_WELCOME
+; License page
+!define MUI_LICENSEPAGE_CHECKBOX
+!insertmacro MUI_PAGE_LICENSE "..\..\..\COPYRIGHTS.rtf"
+; Directory page
+!insertmacro MUI_PAGE_DIRECTORY
+; Start menu page
+var ICONS_GROUP
+!define MUI_STARTMENUPAGE_NODISABLE
+!define MUI_STARTMENUPAGE_DEFAULTFOLDER "illiminable\oggcodecs"
+!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
+!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
+!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
+!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
+; Instfiles page
+!insertmacro MUI_PAGE_INSTFILES
+; Finish page
+!insertmacro MUI_PAGE_FINISH
+
+; Uninstaller pages
+!insertmacro MUI_UNPAGE_INSTFILES
+
+; Language files
+!insertmacro MUI_LANGUAGE "Czech"
+!insertmacro MUI_LANGUAGE "Dutch"
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_LANGUAGE "French"
+!insertmacro MUI_LANGUAGE "German"
+!insertmacro MUI_LANGUAGE "Italian"
+!insertmacro MUI_LANGUAGE "Japanese"
+!insertmacro MUI_LANGUAGE "Korean"
+!insertmacro MUI_LANGUAGE "Polish"
+; !insertmacro MUI_LANGUAGE "Russian"
+!insertmacro MUI_LANGUAGE "SimpChinese"
+!insertmacro MUI_LANGUAGE "Spanish"
+!insertmacro MUI_LANGUAGE "TradChinese"
+!insertmacro MUI_LANGUAGE "Turkish"
+
+; Reserve files
+!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+
+; MUI end ------
+
+Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
+OutFile "oggcodecs_${PRODUCT_VERSION}.exe"
+InstallDir "$PROGRAMFILES\illiminable\oggcodecs"
+InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
+ShowInstDetails show
+ShowUnInstDetails show
+
+Function .onInit
+  !insertmacro MUI_LANGDLL_DISPLAY
+FunctionEnd
+
+Section "Ogg Core Files" SEC01
+  SetOutPath "$INSTDIR"
+  SetOverwrite ifnewer
+
+  ; Runtime libraries from visual studio
+  File "${VS_RUNTIME_LOCATION}\msvcr71.dll"
+  File "${VS_RUNTIME_LOCATION}\msvcp71.dll"
+
+
+  ; Libraries
+  File "..\..\..\src\lib\core\ogg\libOOOgg\Release\libOOOgg.dll"
+  File "..\..\..\src\lib\core\ogg\libOOOggSeek\Release\libOOOggSeek.dll"
+  File "..\..\..\src\lib\codecs\cmml\libCMMLTags\Release\libCMMLTags.dll"
+  File "..\..\..\src\lib\codecs\cmml\libCMMLParse\Release\libCMMLParse.dll"
+  File "..\..\..\src\lib\codecs\vorbis\libs\libvorbis\win32\Vorbis_Dynamic_Release\vorbis.dll"
+ 
+  File "..\..\..\src\lib\codecs\theora\libs\libOOTheora\Release\libOOTheora.dll"
+  File "..\..\..\src\lib\codecs\flac\libs\libflac\obj\release\bin\libFLAC.dll"
+  File "..\..\..\src\lib\codecs\flac\libs\libflac\obj\release\bin\libFLAC++.dll"
+  File "..\..\..\src\lib\codecs\helper\libfishsound\win32\Release\libfishsound.dll"
+  File "..\..\..\src\lib\core\ogg\libVorbisComment\Release\libVorbisComment.dll"
+
+  File "..\..\..\src\lib\helper\libTemporalURI\Release\libTemporalURI.dll"
+
+
+
+  ; Utilites
+  File "..\..\..\src\tools\OOOggDump\Release\OOOggDump.exe"
+  File "..\..\..\src\tools\OOOggStat\Release\OOOggStat.exe"
+  File "..\..\..\src\tools\OOOggValidate\Release\OOOggValidate.exe"
+  File "..\..\..\src\tools\OOOggCommentDump\Release\OOOggCommentDump.exe"
+
+
+  ; Text files
+  File "..\..\..\ABOUT.rtf"
+  File "..\..\..\VERSIONS"
+  File "..\..\..\README"
+  File "..\..\..\COPYRIGHTS.rtf"
+  File "..\..\..\COPYRIGHTS"
+
+  File "..\..\..\AUTHORS"
+  File "..\..\..\HISTORY"
+
+
+  ; Install Filters
+  File "..\..\..\src\lib\core\directshow\dsfSeeking\Release\dsfSeeking.dll"
+  File "..\..\..\src\lib\codecs\flac\filters\dsfFLACEncoder\Release\dsfFLACEncoder.dll"
+  File "..\..\..\src\lib\codecs\speex\filters\dsfSpeexEncoder\Release\dsfSpeexEncoder.dll"
+  File "..\..\..\src\lib\codecs\theora\filters\dsfTheoraEncoder\Release\dsfTheoraEncoder.dll"
+  File "..\..\..\src\lib\codecs\vorbis\filters\dsfVorbisEncoder\Release\dsfVorbisEncoder.dll"
+
+  File "..\..\..\src\lib\codecs\flac\filters\dsfNativeFLACSource\Release\dsfNativeFLACSource.dll"
+  File "..\..\..\src\lib\codecs\speex\filters\dsfSpeexDecoder\Release\dsfSpeexDecoder.dll"
+  File "..\..\..\src\lib\codecs\theora\filters\dsfTheoraDecoder\Release\dsfTheoraDecoder.dll"
+  File "..\..\..\src\lib\codecs\flac\filters\dsfFLACDecoder\Release\dsfFLACDecoder.dll"
+  File "..\..\..\src\lib\codecs\vorbis\filters\dsfVorbisDecoder\Release\dsfVorbisDecoder.dll"
+
+  File "..\..\..\src\lib\core\directshow\dsfOggDemux\Release\dsfOggDemux.dll"
+  File "..\..\..\src\lib\core\directshow\dsfOggMux\Release\dsfOggMux.dll"
+  File "..\..\..\src\lib\codecs\cmml\dsfCMMLDecoder\Release\dsfCMMLDecoder.dll"
+  File "..\..\..\src\lib\codecs\cmml\dsfCMMLRawSource\Release\dsfCMMLRawSource.dll"
+  File "..\..\..\src\lib\core\directshow\dsfSubtitleVMR9\Release\dsfSubtitleVMR9.dll"
+
+  File "..\..\..\src\lib\core\directshow\dsfAnxDemux\Release\dsfAnxDemux.dll"
+  File "..\..\..\src\lib\core\directshow\dsfAnxMux\Release\dsfAnxMux.dll"
+
+; Register libraries
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfFLACEncoder.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfSpeexEncoder.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfTheoraEncoder.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfVorbisEncoder.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfNativeFLACSource.dll"'
+
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfSpeexDecoder.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfTheoraDecoder.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfFLACDecoder.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfVorbisDecoder.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfOggDemux.dll"'
+
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfOggMux.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfCMMLDecoder.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfCMMLRawSource.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfSubtitleVMR9.dll"'
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfAnxDemux.dll"'
+
+  ExecWait 'regsvr32 "/s" "$INSTDIR\dsfAnxMux.dll"'
+
+
+  ;Sleep 10000
+; Shortcuts
+  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+  !insertmacro MUI_STARTMENU_WRITE_END
+SectionEnd
+
+Section -AdditionalIcons
+  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
+  CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
+  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
+  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
+  !insertmacro MUI_STARTMENU_WRITE_END
+SectionEnd
+
+Section -Post
+  WriteUninstaller "$INSTDIR\uninst.exe"
+  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\OOOggDump.exe"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\OOOggDump.exe"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
+
+
+
+; Registry Entries for directshow and WMP
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_groups_flac.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\FLAC]
+;@="FLAC File (flac)"
+;"Extensions"=".flac"
+;"MIME Types"="audio/x-flac"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\FLAC" "" "FLAC File (flac)"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\FLAC" "Extensions" ".flac"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\FLAC" "MIME Types" "audio/x-flac"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_groups_oga.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\OGA]
+;@="Ogg File (oga)"
+;"Extensions"=".oga"
+;"MIME Types"="audio/x-ogg"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\OGA" "" "Ogg File (oga)"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\OGA" "Extensions" ".oga"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\OGA" "MIME Types" "audio/x-ogg"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_groups_ogv.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Video\OGV]
+;@="Ogg File (ogv)"
+;"Extensions"=".ogv"
+;"MIME Types"="video/x-ogg"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Video\OGV" "" "Ogg File (ogv)"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Video\OGV" "Extensions" ".ogv"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Video\OGV" "MIME Types" "video/x-ogg"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_groups_spx.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\SPX]
+;@="Ogg File (spx)"
+;"Extensions"=".spx"
+;"MIME Types"="audio/x-ogg"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\SPX" "" "Ogg File (spx)"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\SPX" "Extensions" ".spx"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\SPX" "MIME Types" "audio/x-ogg"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_mime_app_anx.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/x-annodex]
+;@="Anx File"
+;"AlreadyRegistered"="yes"
+;"Extension.Key"=".anx"
+;"Extensions.CommaSep"="anx"
+;"Extensions.SpaceSep"=".anx"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/x-annodex" "" "Anx File"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/x-annodex" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/x-annodex" "Extension.Key" ".anx"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/x-annodex" "Extensions.CommaSep" "anx"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/x-annodex" "Extensions.SpaceSep" ".anx"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_mime_app_ogg.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/ogg]
+;@="Ogg File"
+;"AlreadyRegistered"="yes"
+;"Extension.Key"=".ogg"
+;"Extensions.CommaSep"="ogg,oga,ogv,spx"
+;"Extensions.SpaceSep"=".ogg .oga .ogv .spx"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/ogg" "" "Ogg File"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/ogg" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/ogg" "Extension.Key" ".ogg"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/ogg" "Extensions.CommaSep" "ogg,oga,ogv,spx"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/ogg" "Extensions.SpaceSep" ".ogg .oga .ogv .spx"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_mime_aud_flac.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-flac]
+;@="FLAC Audio File"
+;"AlreadyRegistered"="yes"
+;"Extension.Key"=".flac"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-flac" "" "FLAC Audio File"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-flac" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-flac" "Extension.Key" ".flac"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_mime_aud_ogg.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-ogg]
+;@="Ogg Audio File"
+;"AlreadyRegistered"="yes"
+;"Extension.Key"=".oga"
+;"Extensions.CommaSep"="ogg,spx"
+;"Extensions.SpaceSep"=".ogg .spx"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-ogg" "" "Ogg Audio File"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-ogg" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-ogg" "Extension.Key" ".oga"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-ogg" "Extensions.CommaSep" "ogg,spx"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-ogg" "Extensions.SpaceSep" ".ogg .spx"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_mime_vid_ogg.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\video/x-ogg]
+;@="Ogg Video File"
+;"AlreadyRegistered"="yes"
+;"Extension.Key"=".ogv"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\video/x-ogg" "" "Ogg Video File"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\video/x-ogg" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\video/x-ogg" "Extension.Key" ".ogv"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_anx.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.anx]
+;"AlreadyRegistered"="yes"
+;"MediaType.Description"="Annodex File"
+;"Permissions"=dword:0000000f
+;"Runtime"=dword:00000007
+;"Extension.MIME"="application/x-annodex"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.anx" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.anx" "MediaType.Description" "Annodex File"
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.anx" "Permissions" 0x0000000f
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.anx" "Runtime" 0x00000007
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac" "Extension.MIME" "application/x-annodex"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_flac.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac]
+;"AlreadyRegistered"="yes"
+;"MediaType.Description"="FLAC Audio"
+;"Permissions"=dword:0000000f
+;"Runtime"=dword:00000007
+;"PerceivedType"="audio"
+;"Extension.MIME"="audio/x-flac"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac" "MediaType.Description" "FLAC Audio"
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac" "Permissions" 0x0000000f
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac" "Runtime" 0x00000007
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac" "PerceivedType" "audio"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac" "Extension.MIME" "audio/x-flac"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_oga.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.oga]
+;"AlreadyRegistered"="yes"
+;"MediaType.Description"="Ogg Audio"
+;"Permissions"=dword:0000000f
+;"Runtime"=dword:00000007
+;"PerceivedType"="audio"
+;"Extension.MIME"="audio/x-ogg"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.oga" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.oga" "MediaType.Description" "Ogg Audio"
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.oga" "Permissions" 0x0000000f
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.oga" "Runtime" 0x00000007
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.oga" "PerceivedType" "audio"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.oga" "Extension.MIME" "audio/x-ogg"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_ogg.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogg]
+;"AlreadyRegistered"="yes"
+;"MediaType.Description"="Ogg File"
+;"Permissions"=dword:0000000f
+;"Runtime"=dword:00000007
+;"Extension.MIME"="application/ogg"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogg" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogg" "MediaType.Description" "Ogg File"
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogg" "Permissions" 0x0000000f
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogg" "Runtime" 0x00000007
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogg" "Extension.MIME" "application/ogg"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_ogv.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogv]
+;"AlreadyRegistered"="yes"
+;"MediaType.Description"="Ogg Video"
+;"Permissions"=dword:0000000f
+;"Runtime"=dword:00000007
+;"PerceivedType"="video"
+;"Extension.MIME"="video/x-ogg"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogv" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogv" "MediaType.Description" "Ogg Video"
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogv" "Permissions" 0x0000000f
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogv" "Runtime" 0x00000007
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogv" "PerceivedType" "video"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogv" "Extension.MIME" "video/x-ogg"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_spx.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.spx]
+;"AlreadyRegistered"="yes"
+;"MediaType.Description"="Ogg Speex Audio"
+;"Permissions"=dword:0000000f
+;"Runtime"=dword:00000007
+;"PerceivedType"="audio"
+;"Extension.MIME"="audio/x-ogg"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.spx" "AlreadyRegistered" "yes"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.spx" "MediaType.Description" "Ogg Speex Audio"
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.spx" "Permissions" 0x0000000f
+  WriteRegDWORD HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.spx" "Runtime" 0x00000007
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.spx" "PerceivedType" "audio"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.spx" "Extension.MIME" "audio/x-ogg"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_anx.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.anx]
+;"Source Filter"="{6F767551-E3E1-461f-A8E5-C8ED36342ED1}"
+  WriteRegStr HKCR "Media Type\Extensions\.anx" "Source Filter" "{6F767551-E3E1-461f-A8E5-C8ED36342ED1}"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_flac.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.flac]
+;"Source Filter"="{6DDA37BA-0553-499a-AE0D-BEBA67204548}"
+  WriteRegStr HKCR "Media Type\Extensions\.flac" "Source Filter" "{6DDA37BA-0553-499a-AE0D-BEBA67204548}"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_http.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\http\Extensions]
+;".OGG"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;".OGV"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;".OGA"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;".SPX"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;".ANX"="{6F767551-E3E1-461f-A8E5-C8ED36342ED1}"
+  WriteRegStr HKCR "http\Extensions" ".OGG" "{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+  WriteRegStr HKCR "http\Extensions" ".OGV" "{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+  WriteRegStr HKCR "http\Extensions" ".OGA" "{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+  WriteRegStr HKCR "http\Extensions" ".SPX" "{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+  WriteRegStr HKCR "http\Extensions" ".ANX" "{6F767551-E3E1-461f-A8E5-C8ED36342ED1}"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_oga.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.oga]
+;"Source Filter"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+  WriteRegStr HKCR "Media Type\Extensions\.oga" "Source Filter" "{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_ogg.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.ogg]
+;"Source Filter"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+  WriteRegStr HKCR "Media Type\Extensions\.ogg" "Source Filter" "{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_ogv.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.ogv]
+;"Source Filter"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+  WriteRegStr HKCR "Media Type\Extensions\.ogv" "Source Filter" "{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_spx.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.spx]
+;"Source Filter"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+  WriteRegStr HKCR "Media Type\Extensions\.spx" "Source Filter" "{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; wmp_mls.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions]
+;"ogv"="video"
+;"oga"="audio"
+;"spx"="audio"
+;"flac"="audio"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions" "ogv" "video"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions" "oga" "audio"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions" "spx" "audio"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions" "flac" "audio"
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+SectionEnd
+
+
+Function un.onUninstSuccess
+;  HideWindow
+  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."
+FunctionEnd
+
+Function un.onInit
+!insertmacro MUI_UNGETLANGUAGE
+  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2
+  Abort
+FunctionEnd
+
+Section Uninstall
+; Unregister libraries
+
+  ; Unregister core annodex libraries
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfSubtitleVMR9.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfCMMLDecoder.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfCMMLRawSource.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfAnxDemux.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfAnxMux.dll"'
+
+  
+  ; Unregister core ogg libraries
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfOggDemux.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfOggMux.dll"'
+
+
+  ; Unregister encoders
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfFLACEncoder.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfSpeexEncoder.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfTheoraEncoder.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfVorbisEncoder.dll"'
+
+  
+  ; Unregister decoders
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfNativeFLACSource.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfSpeexDecoder.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfTheoraDecoder.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfFLACDecoder.dll"'
+  ExecWait 'regsvr32 "/s" "/u" "$INSTDIR\dsfVorbisDecoder.dll"'
+
+
+
+  
+
+
+; Get rid of all the registry keys we made for directshow and WMP
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_groups_flac.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\FLAC]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\FLAC"
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_groups_oga.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\OGA]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\OGA"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_groups_ogv.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Video\OGV]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Video\OGV"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_groups_spx.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\SPX]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Audio\SPX"
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_mime_app_ogg.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/ogg]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\application/ogg"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_mime_aud_flac.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-flac]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-flac"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_mime_aud_ogg.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-ogg]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\audio/x-ogg"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; media_mime_vid_ogg.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\video/x-ogg]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\MIME Types\video/x-ogg"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_flac.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.flac"
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_oga.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.oga]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.oga"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_ogg.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogg]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogg"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_ogv.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogv]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.ogv"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mm_medlib_spx.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.spx]
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Multimedia\WMPlayer\Extensions\.spx"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_anx.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.anx]
+  DeleteRegKey HKCR "Media Type\Extensions\.anx"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_flac.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.flac]
+  DeleteRegKey HKCR "Media Type\Extensions\.flac"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_http.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\http\Extensions]
+;".OGG"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;".OGV"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;".OGA"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;".SPX"="{31CA0186-1FF0-4181-AA38-3CA4040BD260}"
+;".ANX"="{6F767551-E3E1-461f-A8E5-C8ED36342ED1}"
+  DeleteRegValue HKCR "http\Extensions" ".OGG"
+  DeleteRegValue HKCR "http\Extensions" ".OGV"
+  DeleteRegValue HKCR "http\Extensions" ".OGA"
+  DeleteRegValue HKCR "http\Extensions" ".SPX"
+  DeleteRegValue HKCR "http\Extensions" ".ANX"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_oga.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.oga]
+  DeleteRegKey HKCR "Media Type\Extensions\.oga"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_ogg.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.ogg]
+  DeleteRegKey HKCR "Media Type\Extensions\.ogg"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_ogv.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.ogv]
+  DeleteRegKey HKCR "Media Type\Extensions\.ogv"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; mt_spx.reg
+;=========================================================
+;[HKEY_CLASSES_ROOT\Media Type\Extensions\.spx]
+  DeleteRegKey HKCR "Media Type\Extensions\.spx"
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; wmp_mls.reg
+;=========================================================
+;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions]
+;"ogv"="video"
+;"oga"="audio"
+;"spx"="audio"
+;"flac"="audio"
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions" "ogv"
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions" "oga"
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions" "spx"
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\MediaPlayer\MLS\Extensions" "flac"
+
+
+  !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
+
+  ;Delete utils
+  Delete "$INSTDIR\OOOggCommentDump.exe"
+  Delete "$INSTDIR\OOOggValidate.exe"
+  Delete "$INSTDIR\OOOggStat.exe"
+  Delete "$INSTDIR\OOOggDump.exe"
+
+
+  ;Delete libraries
+  Delete "$INSTDIR\libFLAC++.dll"
+  Delete "$INSTDIR\libFLAC.dll"
+  Delete "$INSTDIR\libfishsound.dll"
+  Delete "$INSTDIR\libOOTheora.dll"
+  Delete "$INSTDIR\vorbis.dll"
+
+  Delete "$INSTDIR\libCMMLParse.dll"
+  Delete "$INSTDIR\libCMMLTags.dll"
+  Delete "$INSTDIR\libVorbisComment.dll"
+  Delete "$INSTDIR\libOOOggSeek.dll"
+  Delete "$INSTDIR\libOOOgg.dll"
+
+  Delete "$INSTDIR\libTemporalURI.dll"
+
+
+  ;Delete Filter
+  Delete "$INSTDIR\dsfVorbisEncoder.dll"
+  Delete "$INSTDIR\dsfTheoraEncoder.dll"
+  Delete "$INSTDIR\dsfSpeexEncoder.dll"
+  Delete "$INSTDIR\dsfFLACEncoder.dll"
+  Delete "$INSTDIR\dsfVorbisDecoder.dll"
+
+  Delete "$INSTDIR\dsfFLACDecoder.dll"
+  Delete "$INSTDIR\dsfTheoraDecoder.dll"
+  Delete "$INSTDIR\dsfSpeexDecoder.dll"
+  Delete "$INSTDIR\dsfNativeFLACSource.dll"
+  Delete "$INSTDIR\dsfSubtitleVMR9.dll"
+
+  Delete "$INSTDIR\dsfAnxDemux.dll"
+  Delete "$INSTDIR\dsfCMMLDecoder.dll"
+  Delete "$INSTDIR\dsfOggDemux.dll"
+  Delete "$INSTDIR\dsfSeeking.dll"
+  Delete "$INSTDIR\dsfOggMux.dll"
+
+  Delete "$INSTDIR\dsfAnxMux.dll"
+  Delete "$INSTDIR\dsfCMMLRawSource.dll"
+
+
+  ;Delete text files
+  Delete "$INSTDIR\ABOUT.rtf"
+  Delete "$INSTDIR\VERSIONS"
+  Delete "$INSTDIR\README"
+  Delete "$INSTDIR\COPYRIGHTS.rtf"
+  Delete "$INSTDIR\COPYRIGHTS"
+
+  Delete "$INSTDIR\AUTHORS"
+  Delete "$INSTDIR\HISTORY"
+
+
+  ;Delete runtimes
+  Delete "$INSTDIR\msvcr71.dll"
+  Delete "$INSTDIR\msvcp71.dll"
+
+
+  ;Delete accesory files, links etc.
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
+  Delete "$INSTDIR\${PRODUCT_NAME}.url"
+  Delete "$INSTDIR\uninst.exe"
+
+  RMDir "$SMPROGRAMS\$ICONS_GROUP"
+  ; Remove the "illiminable" start menu group (but only if it's empty)
+  RMDir "$SMPROGRAMS\$ICONS_GROUP\.."
+
+  ; Need to change the working directory to something else (anything) besides
+  ; the output directory, so we can rmdir it
+  SetOutPath "$TEMP"
+  RMDir "$INSTDIR"
+
+  ; Remove the "illiminable" parent directory (but only if it's empty)
+  RMDir "$INSTDIR\.."
+
+  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
+  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
+;  SetAutoClose true
+SectionEnd

Added: trunk/oggdsf/src/lib/codecs/cmml/dsfCMMLDecoder/CMMLDecodeInputPin.cpp
===================================================================
--- trunk/oggdsf/src/lib/codecs/cmml/dsfCMMLDecoder/CMMLDecodeInputPin.cpp	2006-02-12 22:06:51 UTC (rev 10812)
+++ trunk/oggdsf/src/lib/codecs/cmml/dsfCMMLDecoder/CMMLDecodeInputPin.cpp	2006-02-12 22:09:18 UTC (rev 10813)
@@ -0,0 +1,178 @@
+//===========================================================================
+//Copyright (C) 2003, 2004, 2005 Zentaro Kavanagh
+//
+//Redistribution and use in source and binary forms, with or without
+//modification, are permitted provided that the following conditions
+//are met:
+//
+//- Redistributions of source code must retain the above copyright
+//  notice, this list of conditions and the following disclaimer.
+//
+//- Redistributions in binary form must reproduce the above copyright
+//  notice, this list of conditions and the following disclaimer in the
+//  documentation and/or other materials provided with the distribution.
+//
+//- Neither the name of Zentaro Kavanagh nor the names of contributors 
+//  may be used to endorse or promote products derived from this software 
+//  without specific prior written permission.
+//
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+//``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+//PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION OR
+//CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+//EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+//PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+//PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+//LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+//NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+//SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//===========================================================================
+
+#include "stdafx.h"
+#include "CMMLDecodeInputPin.h"
+#include "CMMLDecodeFilter.h"
+
+CMMLDecodeInputPin::CMMLDecodeInputPin(CMMLDecodeFilter* inParentFilter, HRESULT* outHR)
+	:	CTransformInputPin(NAME("CMMLDecodeInputPin"), inParentFilter, outHR, L"CMML In")
+	,	mSetupState(VSS_SEEN_NOTHING)
+	,	mCMMLFormatBlock(NULL)
+	,	mCMMLHeadPacket(NULL)
+{
+
+}
+
+CMMLDecodeInputPin::~CMMLDecodeInputPin(void)
+{
+	delete mCMMLFormatBlock;
+	delete mCMMLHeadPacket;
+}
+
+STDMETHODIMP CMMLDecodeInputPin::NonDelegatingQueryInterface(REFIID riid, void **ppv)
+{
+	if (riid == IID_IMediaSeeking) {
+		*ppv = (IMediaSeeking*)this;
+		((IUnknown*)*ppv)->AddRef();
+		return NOERROR;
+	} else if (riid == IID_IOggDecoder) {
+		*ppv = (IOggDecoder*)this;
+		//((IUnknown*)*ppv)->AddRef();
+		return NOERROR;
+
+	}
+
+	return CBaseInputPin::NonDelegatingQueryInterface(riid, ppv); 
+}
+
+HRESULT CMMLDecodeInputPin::SetMediaType(const CMediaType* inMediaType) 
+{
+	//FIX:::Error checking
+	//RESOLVED::: Bit better.
+	if (CheckMediaType(inMediaType) == S_OK) {
+		//((OGMDecodeFilter*)m_pFilter)->setOGMFormat(inMediaType->pbFormat);
+		
+	} else {
+		throw 0;
+	}
+	return CBaseInputPin::SetMediaType(inMediaType);
+
+}
+
+HRESULT CMMLDecodeInputPin::CheckMediaType(const CMediaType *inMediaType)
+{
+	if (		(inMediaType->majortype == MEDIATYPE_OggPacketStream)
+			&&	(inMediaType->subtype == MEDIASUBTYPE_None)
+			&&	(inMediaType->formattype == FORMAT_OggIdentHeader)) {
+		if (inMediaType->cbFormat == CMML_IDENT_HEADER_SIZE) {
+			if (strncmp((char*)inMediaType->pbFormat, "CMML\000\000\000\000", 8) == 0) {
+				//TODO::: Possibly verify version
+				return S_OK;
+			}
+		}
+	}
+	return S_FALSE;
+	
+}
+HRESULT CMMLDecodeInputPin::GetAllocatorRequirements(ALLOCATOR_PROPERTIES *outRequestedProps)
+{
+	outRequestedProps->cbBuffer = CMML_BUFFER_SIZE;
+	outRequestedProps->cBuffers = CMML_NUM_BUFFERS;
+	outRequestedProps->cbAlign = 1;
+	outRequestedProps->cbPrefix = 0;
+
+	return S_OK;
+}
+LOOG_INT64 CMMLDecodeInputPin::convertGranuleToTime(LOOG_INT64 inGranule)
+{
+	//return inGranule * mVideoFormatBlock->AvgTimePerFrame;
+	LOOG_INT64 locMask = 0xffffffffffffffff >> (64 - mCMMLFormatBlock->granuleSplitBits);
+	LOOG_INT64 locTime = ((inGranule & locMask) + (inGranule >> mCMMLFormatBlock->granuleSplitBits));
+
+	return ((locTime * mCMMLFormatBlock->granuleDenominator * UNITS) / mCMMLFormatBlock->granuleNumerator);
+}
+
+LOOG_INT64 CMMLDecodeInputPin::mustSeekBefore(LOOG_INT64 inGranule)
+{
+	//TODO::: Get adjustment from block size info... for now, it doesn't matter if no preroll
+	return inGranule;
+}
+IOggDecoder::eAcceptHeaderResult CMMLDecodeInputPin::showHeaderPacket(OggPacket* inCodecHeaderPacket)
+{
+	switch (mSetupState) {
+		case VSS_SEEN_NOTHING:
+			if (strncmp((char*)inCodecHeaderPacket->packetData(), "CMML\000\000\000\000", 0) == 0) {
+				handleHeaderPacket(inCodecHeaderPacket);
+				mSetupState = VSS_SEEN_BOS;
+				return IOggDecoder::AHR_MORE_HEADERS_TO_COME;
+			}
+			mSetupState = VSS_ERROR;
+			return IOggDecoder::AHR_INVALID_HEADER;
+			
+		case VSS_SEEN_BOS:
+			if (strncmp((char*)inCodecHeaderPacket->packetData(), "<?xml", 5) == 0) {
+				mSetupState = VSS_SEEN_XML_HEADER;
+				
+				return IOggDecoder::AHR_MORE_HEADERS_TO_COME;
+			}
+			return IOggDecoder::AHR_INVALID_HEADER;
+		
+		case VSS_SEEN_XML_HEADER:
+			if (strncmp((char*)inCodecHeaderPacket->packetData(), "<head", 5) == 0) {
+				mSetupState = VSS_ALL_HEADERS_SEEN;
+				//handleHeadPacket(inCodecHeaderPacket->clone())
+				mCMMLHeadPacket = inCodecHeaderPacket->clone();
+				return IOggDecoder::AHR_ALL_HEADERS_RECEIVED;
+			}
+			return IOggDecoder::AHR_INVALID_HEADER;
+		case VSS_ALL_HEADERS_SEEN:
+		case VSS_ERROR:
+		default:
+			return IOggDecoder::AHR_UNEXPECTED;
+	}
+}
+
+
+
+bool CMMLDecodeInputPin::handleHeaderPacket(OggPacket* inHeaderPack)
+{
+	delete mCMMLFormatBlock;
+	mCMMLFormatBlock = new sCMMLFormatBlock;
+	mCMMLFormatBlock->granuleNumerator = iLE_Math::CharArrToInt64(inHeaderPack->packetData() + 12);
+	mCMMLFormatBlock->granuleDenominator = iLE_Math::CharArrToInt64(inHeaderPack->packetData() + 20);
+	mCMMLFormatBlock->granuleSplitBits = inHeaderPack->packetData()[28];
+	return true;
+	
+
+
+
+}
+string CMMLDecodeInputPin::getCodecShortName()
+{
+	return "CMML";
+}
+string CMMLDecodeInputPin::getCodecIdentString()
+{
+	//TODO:::
+	return "CMML";
+}
+

Added: trunk/oggdsf/src/lib/codecs/cmml/dsfCMMLDecoder/CMMLDecodeInputPin.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/cmml/dsfCMMLDecoder/CMMLDecodeInputPin.h	2006-02-12 22:06:51 UTC (rev 10812)
+++ trunk/oggdsf/src/lib/codecs/cmml/dsfCMMLDecoder/CMMLDecodeInputPin.h	2006-02-12 22:09:18 UTC (rev 10813)
@@ -0,0 +1,83 @@
+//===========================================================================
+//Copyright (C) 2003, 2004, 2005 Zentaro Kavanagh
+//
+//Redistribution and use in source and binary forms, with or without
+//modification, are permitted provided that the following conditions
+//are met:
+//
+//- Redistributions of source code must retain the above copyright
+//  notice, this list of conditions and the following disclaimer.
+//
+//- Redistributions in binary form must reproduce the above copyright
+//  notice, this list of conditions and the following disclaimer in the
+//  documentation and/or other materials provided with the distribution.
+//
+//- Neither the name of Zentaro Kavanagh nor the names of contributors 
+//  may be used to endorse or promote products derived from this software 
+//  without specific prior written permission.
+//
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+//``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+//PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION OR
+//CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+//EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+//PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+//PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+//LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+//NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+//SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//===========================================================================
+#pragma once
+
+#include "cmmldecoderdllstuff.h"
+#include "IOggDecoder.h"
+
+class CMMLDecodeFilter;
+
+class CMMLDecodeInputPin
+	:	public CTransformInputPin
+	,	public IOggDecoder
+{
+public:
+	DECLARE_IUNKNOWN
+	STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
+
+	CMMLDecodeInputPin(CMMLDecodeFilter* inParent, HRESULT* outHR);
+	virtual ~CMMLDecodeInputPin(void);
+
+	virtual STDMETHODIMP GetAllocatorRequirements(ALLOCATOR_PROPERTIES *outRequestedProps);
+	virtual HRESULT SetMediaType(const CMediaType* inMediaType);
+	virtual HRESULT CheckMediaType(const CMediaType *inMediaType);
+
+	
+
+	//IOggDecoder Interface
+	virtual LOOG_INT64 convertGranuleToTime(LOOG_INT64 inGranule);
+	virtual LOOG_INT64 mustSeekBefore(LOOG_INT64 inGranule);
+	virtual IOggDecoder::eAcceptHeaderResult showHeaderPacket(OggPacket* inCodecHeaderPacket);
+	virtual string getCodecShortName();
+	virtual string getCodecIdentString();
+
+	sCMMLFormatBlock* getCMMLFormatBlock()		{		return mCMMLFormatBlock;	}
+protected:
+	enum eOGMSetupState {
+		VSS_SEEN_NOTHING,
+		VSS_SEEN_BOS,
+		VSS_SEEN_XML_HEADER,
+		VSS_ALL_HEADERS_SEEN,
+		VSS_ERROR
+	};
+
+	eOGMSetupState mSetupState;
+	bool handleHeaderPacket(OggPacket* inHeaderPack);
+
+	sCMMLFormatBlock* mCMMLFormatBlock;
+
+	OggPacket* mCMMLHeadPacket;
+
+	static const unsigned long CMML_IDENT_HEADER_SIZE = 29;
+	static const unsigned long CMML_NUM_BUFFERS = 15;
+	static const unsigned long CMML_BUFFER_SIZE = 1024*256;
+
+};

Added: trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/AutoOggChainGranuleSeekTable.cpp
===================================================================
--- trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/AutoOggChainGranuleSeekTable.cpp	2006-02-12 22:06:51 UTC (rev 10812)
+++ trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/AutoOggChainGranuleSeekTable.cpp	2006-02-12 22:09:18 UTC (rev 10813)
@@ -0,0 +1,175 @@
+#include "StdAfx.h"
+#include ".\autooggchaingranuleseektable.h"
+
+AutoOggChainGranuleSeekTable::AutoOggChainGranuleSeekTable(string inFilename)
+	:	mFilename(inFilename)
+	,	mFilePos(0)
+	,	mOggDemux(NULL)
+	,	mDuration(0)
+	,	mPreviousFilePos(0)
+	,	mIsEnabled(false)
+{
+	mOggDemux = new OggDataBuffer;
+	mOggDemux->registerVirtualCallback(this);
+
+}
+
+AutoOggChainGranuleSeekTable::~AutoOggChainGranuleSeekTable(void)
+{
+	delete mOggDemux;
+
+	for (size_t i = 0; i < mStreamMaps.size(); i++) {
+		delete mStreamMaps[i].mSeekTable;
+	}
+}
+
+
+bool AutoOggChainGranuleSeekTable::buildTable()
+{
+	if (mFilename.find("http") != 0) {
+		
+		//mSeekMap.clear();
+		//addSeekPoint(0, 0);
+
+		mFile.open(mFilename.c_str(), ios_base::in | ios_base::binary);
+		//TODO::: Error check
+		const unsigned long BUFF_SIZE = 4096;
+		unsigned char* locBuff = new unsigned char[BUFF_SIZE];		//Deleted this function.
+		while (!mFile.eof()) {
+			mFile.read((char*)locBuff, BUFF_SIZE);
+			mOggDemux->feed((const unsigned char*)locBuff, mFile.gcount());
+		}
+		delete[] locBuff;
+
+		mFile.close();
+		mIsEnabled = true;
+		
+	} else {
+		mIsEnabled = false;
+	}
+	return true;
+}
+OggGranuleSeekTable::tSeekPair AutoOggChainGranuleSeekTable::seekPos(LOOG_INT64 inTime)
+{
+	unsigned long retEarliestPos = 4294967295UL;
+
+	LOOG_INT64 locStreamTime = -1;
+	bool locGotAValidPos = false;
+
+
+	OggGranuleSeekTable::tSeekPair locSeekInfo;
+	OggGranuleSeekTable::tSeekPair retBestSeekInfo;
+	for (size_t i = 0; i < mStreamMaps.size(); i++) {
+
+		if ((mStreamMaps[i].mSeekTable != NULL) && (mStreamMaps[i].mSeekInterface != NULL)) {
+			//Get the preliminary seek info
+			locSeekInfo = mStreamMaps[i].mSeekTable->getStartPos(inTime);
+			//1. Get the granule pos in the preliminary seek
+			//2. Ask the seek interface what granule we must seek before to make this a valid seek
+			//		ie if preroll or keyframes, this value must be less than the original seek value
+			//3. Convert the new granule to time
+			//4. Repeat the seek
+			locStreamTime = mStreamMaps[i].mSeekInterface->convertGranuleToTime(mStreamMaps[i].mSeekInterface->mustSeekBefore(locSeekInfo.second.second));
+			locSeekInfo = mStreamMaps[i].mSeekTable->getStartPos(locStreamTime);
+
+			if (retEarliestPos >= locSeekInfo.second.first) {
+				//Update the earliest position
+				retEarliestPos = locSeekInfo.second.first;
+				retBestSeekInfo = locSeekInfo;
+				locGotAValidPos = true;
+			}
+		}
+	}	
+
+	return retBestSeekInfo;//retEarliestPos;
+
+}
+LOOG_INT64 AutoOggChainGranuleSeekTable::fileDuration()
+{
+	return mDuration;
+}
+bool AutoOggChainGranuleSeekTable::acceptOggPage(OggPage* inOggPage)
+{
+	LOOG_INT64 locGranule = inOggPage->header()->GranulePos();
+	unsigned long locSerialNo = inOggPage->header()->StreamSerialNo();
+	sStreamMapping locMapping = getMapping(locSerialNo);
+
+	//There can be upto 2 incomplete packets on any page, one at the end and one at the start
+	unsigned long locNumBrokenPacks = (inOggPage->header()->isContinuation() ? 1 : 0);
+	if (inOggPage->numPackets() > 0) {
+		locNumBrokenPacks += (inOggPage->getPacket(inOggPage->numPackets() - 1)->isTruncated() ? 1 : 0);
+	}
+	//Exclude pages, with -1 granule pos, or that have no complete packets
+	if (locGranule != -1) { 
+		LOOG_INT64 locRealTime = -1;
+		if ((inOggPage->numPackets() > locNumBrokenPacks)) {
+			
+			if ((locMapping.mSeekInterface != NULL) && (locMapping.mSeekTable != NULL)) {
+				//There is valid stream info
+				locRealTime = locMapping.mSeekInterface->convertGranuleToTime(locGranule);
+				if (locRealTime >= 0) {
+					locMapping.mSeekTable->addSeekPoint(locRealTime, mFilePos, locGranule);
+					if (locRealTime > mDuration) {
+						mDuration = locRealTime;
+					}
+				}
+			}
+		} else {
+			//If there's a granule pos, but no complete packets, there must at least be the end of a packet
+			//	so mark  the seek point with the previous filepos from a page that had a packet start on it
+			if ((locMapping.mSeekInterface != NULL) && (locMapping.mSeekTable != NULL)) {
+				//There is valid stream info
+				locRealTime = locMapping.mSeekInterface->convertGranuleToTime(locGranule);
+				if (locRealTime >= 0) {
+					locMapping.mSeekTable->addSeekPoint(locRealTime, mPreviousFilePos, locGranule);
+					if (locRealTime > mDuration) {
+						mDuration = locRealTime;
+					}
+				}
+			}
+		}
+	}
+
+	//Only remember the previous file position, if a packet started on this page, otherwise, we might
+	//	use the start point of the previous page, and that previous page may have not had any packets
+	//	on it.
+	//
+	//Any page that is not a continuation and has more than 1 packet, must have a packet starting on it
+	if (!(inOggPage->header()->isContinuation() && (inOggPage->numPackets() <= 1))) {
+		mPreviousFilePos = mFilePos;
+	}
+	mFilePos += inOggPage->pageSize();
+
+	delete inOggPage;
+	return true;
+}
+AutoOggChainGranuleSeekTable::sStreamMapping AutoOggChainGranuleSeekTable::getMapping(unsigned long inSerialNo)
+{
+	for (size_t i = 0; i < mStreamMaps.size(); i++) {
+		if (mStreamMaps[i].mSerialNo == inSerialNo) {
+			return mStreamMaps[i];
+		}
+	}
+
+	sStreamMapping retMapping;
+	retMapping.mSeekInterface = NULL;
+	retMapping.mSeekTable = NULL;
+	retMapping.mSerialNo = 0;
+
+	return retMapping;
+}
+bool AutoOggChainGranuleSeekTable::addStream(unsigned long inSerialNo, IOggDecoderSeek* inSeekInterface)
+{
+	sStreamMapping locMapping;
+	locMapping.mSerialNo = inSerialNo;
+	locMapping.mSeekInterface = inSeekInterface;
+	if (inSeekInterface == NULL) {
+		locMapping.mSeekTable = NULL;
+	} else {
+		locMapping.mSeekTable = new OggGranuleSeekTable;
+	}
+	mStreamMaps.push_back(locMapping);
+
+	return true;
+
+}
\ No newline at end of file

Added: trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/AutoOggChainGranuleSeekTable.h
===================================================================
--- trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/AutoOggChainGranuleSeekTable.h	2006-02-12 22:06:51 UTC (rev 10812)
+++ trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/AutoOggChainGranuleSeekTable.h	2006-02-12 22:09:18 UTC (rev 10813)
@@ -0,0 +1,49 @@
+#pragma once
+
+#include <libOOOgg/libOOOgg.h>
+#include "OggGranuleSeekTable.h"
+#include "IOggDecoderSeek.h"
+
+
+class LIBOOOGGSEEK_API AutoOggChainGranuleSeekTable
+	:	public IOggCallback
+{
+public:
+	AutoOggChainGranuleSeekTable(string inFilename);
+	virtual ~AutoOggChainGranuleSeekTable(void);
+
+	/// Builds the actual seek table: only works if we have random access to the file.
+	virtual bool buildTable();
+
+	//IOggCallback interface
+	virtual bool acceptOggPage(OggPage* inOggPage);
+
+	/// The duration of the file, in DirectShow time units.
+	LOOG_INT64 fileDuration();
+
+	bool enabled()					{			return mIsEnabled;		}
+
+	bool addStream(unsigned long inSerialNo, IOggDecoderSeek* inSeekInterface);
+
+	OggGranuleSeekTable::tSeekPair seekPos(LOOG_INT64 inTime);
+protected:
+
+	struct sStreamMapping {
+		unsigned long mSerialNo;
+		IOggDecoderSeek* mSeekInterface;
+		OggGranuleSeekTable* mSeekTable;
+	};
+
+	vector<sStreamMapping> mStreamMaps;
+
+	bool mIsEnabled;
+
+	LOOG_INT64 mDuration;
+	sStreamMapping getMapping(unsigned long inSerialNo);
+	fstream mFile;
+	string mFilename;
+	unsigned long mFilePos;
+
+	unsigned long mPreviousFilePos;
+	OggDataBuffer* mOggDemux;
+};

Added: trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/IOggDecoderSeek.h
===================================================================
--- trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/IOggDecoderSeek.h	2006-02-12 22:06:51 UTC (rev 10812)
+++ trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/IOggDecoderSeek.h	2006-02-12 22:09:18 UTC (rev 10813)
@@ -0,0 +1,14 @@
+
+#pragma once
+
+class IOggDecoderSeek {
+public:
+	IOggDecoderSeek(void)		{}
+	virtual ~IOggDecoderSeek(void)		{}
+
+
+	virtual LOOG_INT64 convertGranuleToTime(LOOG_INT64 inGranule) = 0;
+	virtual LOOG_INT64 mustSeekBefore(LOOG_INT64 inGranule) = 0;
+
+
+};

Added: trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/OggGranuleSeekTable.cpp
===================================================================
--- trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/OggGranuleSeekTable.cpp	2006-02-12 22:06:51 UTC (rev 10812)
+++ trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/OggGranuleSeekTable.cpp	2006-02-12 22:09:18 UTC (rev 10813)
@@ -0,0 +1,89 @@
+//===========================================================================
+//Copyright (C) 2003, 2004, 2005 Zentaro Kavanagh
+//
+//Redistribution and use in source and binary forms, with or without
+//modification, are permitted provided that the following conditions
+//are met:
+//
+//- Redistributions of source code must retain the above copyright
+//  notice, this list of conditions and the following disclaimer.
+//
+//- Redistributions in binary form must reproduce the above copyright
+//  notice, this list of conditions and the following disclaimer in the
+//  documentation and/or other materials provided with the distribution.
+//
+//- Neither the name of Zentaro Kavanagh nor the names of contributors 
+//  may be used to endorse or promote products derived from this software 
+//  without specific prior written permission.
+//
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+//``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+//PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION OR
+//CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+//EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+//PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+//PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+//LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+//NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+//SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//===========================================================================
+
+#include "stdafx.h"
+#include <libOOOggSeek/OggGranuleSeekTable.h>
+
+OggGranuleSeekTable::OggGranuleSeekTable(void)
+	:	mEnabled(true)
+	,	mRealStartPos(0)
+{
+	mSeekMap.clear();
+	mSeekMap.empty();
+	//stDebug.open("G:\\logs\\sktable.log", ios_base::out);
+}
+
+OggGranuleSeekTable::~OggGranuleSeekTable(void)
+{
+	//stDebug.close();
+}
+
+bool OggGranuleSeekTable::enabled() {
+	return mEnabled;
+}
+bool OggGranuleSeekTable::addSeekPoint(LOOG_INT64 inTime, unsigned long mStartPos, LOOG_INT64 inGranulePos)
+{
+	//stDebug<< "Add Point :  Time = "<<inTime<<"   --   Byte Pos : "<<mStartPos<<endl;
+	tGranulePair locPair;
+	locPair.first = mStartPos;
+	locPair.second = inGranulePos;
+	
+	mSeekMap.insert(tSeekMap::value_type(inTime, locPair));
+
+	return true;
+
+}
+
+
+/** Returns a tSeekPair whose first element is the
+    actual closest possible time that can be seeked to (which will always be either before or at
+    the requested seek position).  The second element is the number of bytes into the stream where
+    the first page of the actual seek time occurs.
+  */
+OggGranuleSeekTable::tSeekPair OggGranuleSeekTable::getStartPos(LOOG_INT64 inTime)
+{
+	// Finds the upper bound of the requested time in mSeekMap, which will always be in the range
+	// (0, maxItems], and return the element _before_ the upper bound
+    return *(--(mSeekMap.upper_bound(inTime)));
+	 //mRealStartPos = locValue.first;
+	 //stDebug<<"Get Point : Time Req = "<<inTime<<"   --   Time Given = "<<mRealStartPos<<"   --   Byte Pos : "<<locValue.second<<endl;
+	 //return locValue.second;
+}
+
+/** Note that this method returns a copy of the seek table, not the actual seek table used by
+    the class.  So, feel free to corrupt your copy to your heart's leisure.
+  */
+OggGranuleSeekTable::tSeekMap OggGranuleSeekTable::getSeekMap()
+{
+	tSeekMap locSeekMap = mSeekMap;
+
+	return locSeekMap;
+}

Added: trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/OggGranuleSeekTable.h
===================================================================
--- trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/OggGranuleSeekTable.h	2006-02-12 22:06:51 UTC (rev 10812)
+++ trunk/oggdsf/src/lib/core/ogg/libOOOggSeek/OggGranuleSeekTable.h	2006-02-12 22:09:18 UTC (rev 10813)
@@ -0,0 +1,81 @@
+
+
+
+//===========================================================================
+//Copyright (C) 2003, 2004 Zentaro Kavanagh
+//
+//Redistribution and use in source and binary forms, with or without
+//modification, are permitted provided that the following conditions
+//are met:
+//
+//- Redistributions of source code must retain the above copyright
+//  notice, this list of conditions and the following disclaimer.
+//
+//- Redistributions in binary form must reproduce the above copyright
+//  notice, this list of conditions and the following disclaimer in the
+//  documentation and/or other materials provided with the distribution.
+//
+//- Neither the name of Zentaro Kavanagh nor the names of contributors 
+//  may be used to endorse or promote products derived from this software 
+//  without specific prior written permission.
+//
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+//``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+//PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION OR
+//CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+//EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+//PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+//PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+//LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+//NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+//SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//===========================================================================
+
+#pragma once
+
+#include <libilliCore/libilliCore.h>
+#include <libOOOggSeek/libOOOggSeek.h>
+
+#include <fstream>
+#include <map>
+
+using namespace std;
+
+class LIBOOOGGSEEK_API OggGranuleSeekTable
+{
+public:
+	OggGranuleSeekTable(void);
+	virtual ~OggGranuleSeekTable(void);
+
+	/// A Pair consitsing of a byte position and a granule pos
+	typedef pair<unsigned long, LOOG_INT64> tGranulePair;
+
+	/// A pair consiting of a real time, and a granule pair, making a triplet.
+	typedef pair<LOOG_INT64, tGranulePair> tSeekPair;
+	typedef map<LOOG_INT64, tGranulePair> tSeekMap;
+
+	/// Returns a copy of the seek table.
+	tSeekMap getSeekMap();
+
+	/// Add a seek point (which consists of a time in DirectShow units, and a byte offset corresponding to that time, and a granule pos) to the seek table.
+	bool addSeekPoint(LOOG_INT64 inTime, unsigned long mStartPos, LOOG_INT64 inGranulePos);
+
+	/// Given a requested seek time in DirectShow units, returns the closest time and byte to the seek time.
+	tSeekPair getStartPos(LOOG_INT64 inTime);
+
+	/// Returns whether this table is enabled or disabled.
+	bool enabled();
+    
+protected:
+	tSeekMap mSeekMap;
+	tSeekMap::value_type mSeekValue;
+	LOOG_INT64 mRealStartPos;
+
+	//fstream stDebug;
+	bool mEnabled;
+
+private:
+	OggGranuleSeekTable(const OggGranuleSeekTable&);  // Don't copy me
+    OggGranuleSeekTable &operator=(const OggGranuleSeekTable&);  // Don't assign me
+};



More information about the commits mailing list