[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