[matroska] r1277 - in trunk: . ARCorrect DvdMenuXtractor DvdMenuXtractor/libdvdread DvdMenuXtractor/libdvdread/dvdread DvdMenuXtractor/libdvdread/src DvdMenuXtractor/libdvdread/win32 DvdMenuXtractor/mpegparser DvdMenuXtractor/vobparser DvdMenuXtractor/vobparser/iso LemAPI/ac3_input LemAPI/avi_input LemAPI/matroska_writer LemAPI/mpa_input LemAPI/tinyXML LemAPI/wav_input MatroskaUtils MatroskaUtils/GDC/GDCMatroska MatroskaUtils/GDC/common MatroskaUtils/MatroskaCDL MatroskaUtils/ShellExtension MatroskaUtils/ShellExtension/CheckUsage MatroskaUtils/ShellExtension/DShowTools MatroskaUtils/tinyxml foo_input_matroska libebml libmatroska libmatroska/matroska libmatroska/test libmatroska/test/ebml libmatroska/test/mux libmatroska/test/tags libmatroska/test/utf8 mkaencoder/src mkvwriter mkvwriter/pub mkxds mkxuncat

[email protected] Sat, 17 Feb 2007 14:00:20 +0300 (MSK)
Newsgroups gmane.comp.multimedia.matroska.cvs
Message-ID <[email protected]>
Author: robux4
Date: 2007-02-17 13:55:54 +0300 (Sat, 17 Feb 2007)
New Revision: 1277

Modified:
   trunk/ARCorrect/ARCorrect.h
   trunk/ARCorrect/ARCorrectFilter.h
   trunk/ARCorrect/ARCorrectPage.h
   trunk/ARCorrect/ARCorrect_GUID.h
   trunk/ARCorrect/DShowUtils.h
   trunk/ARCorrect/ITrackInfo.h
   trunk/ARCorrect/PersistPropertyBag.h
   trunk/ARCorrect/resource.h
   trunk/DvdMenuXtractor/DvdMenuXtractor.proj
   trunk/DvdMenuXtractor/chaptermanager.h
   trunk/DvdMenuXtractor/config.h
   trunk/DvdMenuXtractor/dmx.h
   trunk/DvdMenuXtractor/dmxconsole.h
   trunk/DvdMenuXtractor/dmxlogwidget.h
   trunk/DvdMenuXtractor/dmxselectionitem.h
   trunk/DvdMenuXtractor/dmxselectiontree.h
   trunk/DvdMenuXtractor/dmxwizard.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/bswap.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/cmd_print.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/dvd_input.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/dvd_reader.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/dvd_udf.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/dvdread.proj
   trunk/DvdMenuXtractor/libdvdread/dvdread/dvdread_internal.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/ifo_print.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/ifo_read.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/ifo_types.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/md5.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/nav_print.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/nav_read.h
   trunk/DvdMenuXtractor/libdvdread/dvdread/nav_types.h
   trunk/DvdMenuXtractor/libdvdread/libdvdread.proj
   trunk/DvdMenuXtractor/libdvdread/src/src.proj
   trunk/DvdMenuXtractor/libdvdread/win32/config.h
   trunk/DvdMenuXtractor/libdvdread/win32/dirent.h
   trunk/DvdMenuXtractor/libdvdread/win32/gtchar.h
   trunk/DvdMenuXtractor/libdvdread/win32/inttypes.h
   trunk/DvdMenuXtractor/libdvdread/win32/posix.h
   trunk/DvdMenuXtractor/libdvdread/win32/stdint.h
   trunk/DvdMenuXtractor/libdvdread/win32/win32.proj
   trunk/DvdMenuXtractor/logtextedit.h
   trunk/DvdMenuXtractor/mpegparser/CircBuffer.h
   trunk/DvdMenuXtractor/mpegparser/M2VParser.h
   trunk/DvdMenuXtractor/mpegparser/MPEGVideoBuffer.h
   trunk/DvdMenuXtractor/mpegparser/Types.h
   trunk/DvdMenuXtractor/mpegparser/mpegparser.proj
   trunk/DvdMenuXtractor/outputreader.h
   trunk/DvdMenuXtractor/selectiontreeitem.h
   trunk/DvdMenuXtractor/selectiontreesubitem.h
   trunk/DvdMenuXtractor/utilities.h
   trunk/DvdMenuXtractor/vobparser/IFOContent.h
   trunk/DvdMenuXtractor/vobparser/IFOFile.h
   trunk/DvdMenuXtractor/vobparser/VobParser.h
   trunk/DvdMenuXtractor/vobparser/iso/iso_lang.h
   trunk/DvdMenuXtractor/vobparser/vobparser.proj
   trunk/LemAPI/ac3_input/ac3file.h
   trunk/LemAPI/ac3_input/ac3frame.h
   trunk/LemAPI/ac3_input/ac3iframe.h
   trunk/LemAPI/ac3_input/c_types.h
   trunk/LemAPI/avi_input/avilib.h
   trunk/LemAPI/matroska_writer/matroska_writer.h
   trunk/LemAPI/matroska_writer/matroska_writer_gui.h
   trunk/LemAPI/mpa_input/c_types.h
   trunk/LemAPI/mpa_input/mpafile.h
   trunk/LemAPI/mpa_input/mpaframe.h
   trunk/LemAPI/mpa_input/mpiframe.h
   trunk/LemAPI/tinyXML/tinystr.h
   trunk/LemAPI/tinyXML/tinyxml.h
   trunk/LemAPI/wav_input/Config.h
   trunk/LemAPI/wav_input/Endian.h
   trunk/LemAPI/wav_input/FourCC.h
   trunk/LemAPI/wav_input/Types.h
   trunk/LemAPI/wav_input/c_types.h
   trunk/LemAPI/wav_input/chunk.h
   trunk/LemAPI/wav_input/fact.h
   trunk/LemAPI/wav_input/fio.h
   trunk/LemAPI/wav_input/format.h
   trunk/LemAPI/wav_input/riff.h
   trunk/LemAPI/wav_input/wav.h
   trunk/LemAPI/wav_input/wav2mka.h
   trunk/MatroskaUtils/AviTagReader.h
   trunk/MatroskaUtils/CFireRoutine.h
   trunk/MatroskaUtils/DbgOut.h
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_h.h
   trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.h
   trunk/MatroskaUtils/GDC/GDCMatroska/MatroskaParser.h
   trunk/MatroskaUtils/GDC/GDCMatroska/Win32Stream.h
   trunk/MatroskaUtils/GDC/GDCMatroska/resource.h
   trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.h
   trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.h
   trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.h
   trunk/MatroskaUtils/GDC/common/stdafx.h
   trunk/MatroskaUtils/JCThread.h
   trunk/MatroskaUtils/JList.h
   trunk/MatroskaUtils/JString.h
   trunk/MatroskaUtils/MP3TagReader.h
   trunk/MatroskaUtils/MatroskaCDL/CDLApi.h
   trunk/MatroskaUtils/MatroskaCDL/MatroskaCDL.h
   trunk/MatroskaUtils/MatroskaChapterData.h
   trunk/MatroskaUtils/MatroskaPages.h
   trunk/MatroskaUtils/MatroskaReg.h
   trunk/MatroskaUtils/MatroskaTagData.h
   trunk/MatroskaUtils/MatroskaTrackData.h
   trunk/MatroskaUtils/MatroskaUtils.h
   trunk/MatroskaUtils/MatroskaUtilsBitrate.h
   trunk/MatroskaUtils/MatroskaUtilsDebug.h
   trunk/MatroskaUtils/MatroskaUtilsReader.h
   trunk/MatroskaUtils/ShellExtension/CheckUsage/CheckUsage.h
   trunk/MatroskaUtils/ShellExtension/CheckUsage/resource.h
   trunk/MatroskaUtils/ShellExtension/DShowTools/DShowTools.h
   trunk/MatroskaUtils/ShellExtension/DShowTools/convert.h
   trunk/MatroskaUtils/ShellExtension/Http.h
   trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.h
   trunk/MatroskaUtils/ShellExtension/MatroskaProp.h
   trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.h
   trunk/MatroskaUtils/TagReader.h
   trunk/MatroskaUtils/ZipArchive.h
   trunk/MatroskaUtils/mdump.h
   trunk/MatroskaUtils/resource.h
   trunk/MatroskaUtils/tinyxml/tinystr.h
   trunk/config.h
   trunk/foo_input_matroska/DbgOut.h
   trunk/foo_input_matroska/Foobar2000ReaderIOCallback.h
   trunk/foo_input_matroska/container_matroska.h
   trunk/foo_input_matroska/container_matroska_impl.h
   trunk/foo_input_matroska/filesystem_matroska.h
   trunk/foo_input_matroska/matroska_parser.h
   trunk/foo_input_matroska/resource.h
   trunk/libebml/libebml.proj
   trunk/libmatroska/libmatroska.proj
   trunk/libmatroska/matroska/KaxTag.h
   trunk/libmatroska/test/ebml/ebml.proj
   trunk/libmatroska/test/mux/mux.proj
   trunk/libmatroska/test/tags/tags.proj
   trunk/libmatroska/test/test.proj
   trunk/libmatroska/test/utf8/utf8.proj
   trunk/mkaencoder/src/mkaenc.h
   trunk/mkvwriter/IOCallbackWrapper.h
   trunk/mkvwriter/MatroskaMuxer.h
   trunk/mkvwriter/MatroskaSimpleTags.h
   trunk/mkvwriter/mkvwriter.h
   trunk/mkvwriter/pub/hxtmkvwriter.h
   trunk/mkxds/CoreVorbisGUID.h
   trunk/mkxds/MatroskaReader.h
   trunk/mkxds/OggDS.h
   trunk/mkxds/Subtitles.h
   trunk/mkxds/asyncio.h
   trunk/mkxds/codecs.h
   trunk/mkxds/global.h
   trunk/mkxds/mkxPrioFrame.h
   trunk/mkxds/mkx_opin.h
   trunk/mkxds/mkxds.h
   trunk/mkxds/mkxdsProperty.h
   trunk/mkxds/mkxread.h
   trunk/mkxds/resource.h
   trunk/mkxuncat/mkxuncat.proj
   trunk/root.proj
Log:
fix EOL style


Property changes on: trunk/ARCorrect/ARCorrect.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/ARCorrect/ARCorrectFilter.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/ARCorrect/ARCorrectPage.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/ARCorrect/ARCorrect_GUID.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/ARCorrect/DShowUtils.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/ARCorrect/ITrackInfo.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/ARCorrect/PersistPropertyBag.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/ARCorrect/resource.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/DvdMenuXtractor.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/DvdMenuXtractor.proj	2007-02-17 10:34:40 UTC (r=
ev 1276)
+++ trunk/DvdMenuXtractor/DvdMenuXtractor.proj	2007-02-17 10:55:54 UTC (r=
ev 1277)
@@ -1,91 +1,91 @@
-CONFIG_FILE config.h
-PLATFORM_FILES coremake
-
-WORKSPACE dmx
-{
-  USE DvdMenuXtractor
-}
-
-#include "*/*.proj"
-
-CON DvdMenuXtractor
-{
-  USE dvdread
-  USE vobparser
-  USE mpegparser
-
-  INCLUDE "$(QTDIR)/include/QtCore"
-  INCLUDE "$(QTDIR)/include/QtGui"
-  INCLUDE "$(QTDIR)/include/QtXml"
-  INCLUDE "$(QTDIR)/include"
-  INCLUDE(COMPILER_MSVC) libdvdread/win32
-  INCLUDE libdvdread
- =20
-  DEFINE(QT_NO_DEBUG) QT_NO_DEBUG_STREAM
- =20
-  LIBS_RELEASE(COMPILER_MSVC) qtmain.lib
-  LIBS_RELEASE(COMPILER_MSVC && CONFIG_STATIC) QtCore.lib
-  LIBS_RELEASE(COMPILER_MSVC && CONFIG_STATIC) QtGui.lib
-  LIBS_RELEASE(COMPILER_MSVC && CONFIG_STATIC) QtNetwork.lib
-  LIBS_RELEASE(COMPILER_MSVC && CONFIG_STATIC) QtXml.lib
-  LIBS_RELEASE(COMPILER_MSVC && !CONFIG_STATIC) QtCore4.lib
-  LIBS_RELEASE(COMPILER_MSVC && !CONFIG_STATIC) QtGui4.lib
-  LIBS_RELEASE(COMPILER_MSVC && !CONFIG_STATIC) QtNetwork4.lib
-  LIBS_RELEASE(COMPILER_MSVC && !CONFIG_STATIC) QtXml4.lib
-  LIBS_DEBUG(COMPILER_MSVC) qtmaind.lib
-  LIBS_DEBUG(COMPILER_MSVC && CONFIG_STATIC) QtCored.lib
-  LIBS_DEBUG(COMPILER_MSVC && CONFIG_STATIC) QtGuid.lib
-  LIBS_DEBUG(COMPILER_MSVC && CONFIG_STATIC) QtNetworkd.lib
-  LIBS_DEBUG(COMPILER_MSVC && CONFIG_STATIC) QtXmld.lib
-  LIBS_DEBUG(COMPILER_MSVC && !CONFIG_STATIC) QtCored4.lib
-  LIBS_DEBUG(COMPILER_MSVC && !CONFIG_STATIC) QtGuid4.lib
-  LIBS_DEBUG(COMPILER_MSVC && !CONFIG_STATIC) QtNetworkd4.lib
-  LIBS_DEBUG(COMPILER_MSVC && !CONFIG_STATIC) QtXmld4.lib
-  LIBS(COMPILER_GCC) qtmain
-  LIBS(COMPILER_GCC && CONFIG_STATIC) QtNetwork
-  LIBS(COMPILER_GCC && CONFIG_STATIC) QtGui
-  LIBS(COMPILER_GCC && CONFIG_STATIC) QtCore
-  LIBS(COMPILER_GCC && CONFIG_STATIC) QtXml
-  LIBS(COMPILER_GCC && !CONFIG_STATIC) QtNetwork4
-  LIBS(COMPILER_GCC && !CONFIG_STATIC) QtGui4
-  LIBS(COMPILER_GCC && !CONFIG_STATIC) QtCore4
-  LIBS(COMPILER_GCC && !CONFIG_STATIC) QtXml4
-  LIBS(TARGET_WIN) imm32.lib
-  LIBS(TARGET_WIN) winmm.lib
-  LIBS(TARGET_WIN) ws2_32.lib
-
-  LIBINCLUDE "$(QTDIR)/lib"
-
-  SOURCE chaptermanager.cpp
-  SOURCE dmx.cpp
-  SOURCE dmxconsole.cpp
-  SOURCE dmxlogwidget.cpp
-  SOURCE dmxselectionitem.cpp
-  SOURCE dmxselectiontree.cpp
-  SOURCE dmxwizard.cpp
-  SOURCE logtextedit.cpp
-  SOURCE main.cpp
-  SOURCE outputreader.cpp
-  SOURCE selectiontreeitem.cpp
-  SOURCE selectiontreesubitem.cpp
-  SOURCE utilities.cpp
-  SOURCE(TARGET_WIN) dmx.rc
-
-  HEADER chaptermanager.h
-  HEADER_QT4 dmx.h
-  HEADER dmxconsole.h
-  HEADER_QT4 dmxlogwidget.h
-  HEADER dmxselectionitem.h
-  HEADER_QT4 dmxselectiontree.h
-  HEADER_QT4 dmxwizard.h
-  HEADER_QT4 logtextedit.h
-  HEADER_QT4 outputreader.h
-  HEADER selectiontreeitem.h
-  HEADER selectiontreesubitem.h
-  HEADER utilities.h
- =20
-  UI_FORM_QT4 dmxlogwidget.ui
-  UI_FORM_QT4 dmxwizard.ui
- =20
-  RESOURCE_QT4 dmxwizard.qrc
-}
+CONFIG_FILE config.h
+PLATFORM_FILES coremake
+
+WORKSPACE dmx
+{
+  USE DvdMenuXtractor
+}
+
+#include "*/*.proj"
+
+CON DvdMenuXtractor
+{
+  USE dvdread
+  USE vobparser
+  USE mpegparser
+
+  INCLUDE "$(QTDIR)/include/QtCore"
+  INCLUDE "$(QTDIR)/include/QtGui"
+  INCLUDE "$(QTDIR)/include/QtXml"
+  INCLUDE "$(QTDIR)/include"
+  INCLUDE(COMPILER_MSVC) libdvdread/win32
+  INCLUDE libdvdread
+ =20
+  DEFINE(QT_NO_DEBUG) QT_NO_DEBUG_STREAM
+ =20
+  LIBS_RELEASE(COMPILER_MSVC) qtmain.lib
+  LIBS_RELEASE(COMPILER_MSVC && CONFIG_STATIC) QtCore.lib
+  LIBS_RELEASE(COMPILER_MSVC && CONFIG_STATIC) QtGui.lib
+  LIBS_RELEASE(COMPILER_MSVC && CONFIG_STATIC) QtNetwork.lib
+  LIBS_RELEASE(COMPILER_MSVC && CONFIG_STATIC) QtXml.lib
+  LIBS_RELEASE(COMPILER_MSVC && !CONFIG_STATIC) QtCore4.lib
+  LIBS_RELEASE(COMPILER_MSVC && !CONFIG_STATIC) QtGui4.lib
+  LIBS_RELEASE(COMPILER_MSVC && !CONFIG_STATIC) QtNetwork4.lib
+  LIBS_RELEASE(COMPILER_MSVC && !CONFIG_STATIC) QtXml4.lib
+  LIBS_DEBUG(COMPILER_MSVC) qtmaind.lib
+  LIBS_DEBUG(COMPILER_MSVC && CONFIG_STATIC) QtCored.lib
+  LIBS_DEBUG(COMPILER_MSVC && CONFIG_STATIC) QtGuid.lib
+  LIBS_DEBUG(COMPILER_MSVC && CONFIG_STATIC) QtNetworkd.lib
+  LIBS_DEBUG(COMPILER_MSVC && CONFIG_STATIC) QtXmld.lib
+  LIBS_DEBUG(COMPILER_MSVC && !CONFIG_STATIC) QtCored4.lib
+  LIBS_DEBUG(COMPILER_MSVC && !CONFIG_STATIC) QtGuid4.lib
+  LIBS_DEBUG(COMPILER_MSVC && !CONFIG_STATIC) QtNetworkd4.lib
+  LIBS_DEBUG(COMPILER_MSVC && !CONFIG_STATIC) QtXmld4.lib
+  LIBS(COMPILER_GCC) qtmain
+  LIBS(COMPILER_GCC && CONFIG_STATIC) QtNetwork
+  LIBS(COMPILER_GCC && CONFIG_STATIC) QtGui
+  LIBS(COMPILER_GCC && CONFIG_STATIC) QtCore
+  LIBS(COMPILER_GCC && CONFIG_STATIC) QtXml
+  LIBS(COMPILER_GCC && !CONFIG_STATIC) QtNetwork4
+  LIBS(COMPILER_GCC && !CONFIG_STATIC) QtGui4
+  LIBS(COMPILER_GCC && !CONFIG_STATIC) QtCore4
+  LIBS(COMPILER_GCC && !CONFIG_STATIC) QtXml4
+  LIBS(TARGET_WIN) imm32.lib
+  LIBS(TARGET_WIN) winmm.lib
+  LIBS(TARGET_WIN) ws2_32.lib
+
+  LIBINCLUDE "$(QTDIR)/lib"
+
+  SOURCE chaptermanager.cpp
+  SOURCE dmx.cpp
+  SOURCE dmxconsole.cpp
+  SOURCE dmxlogwidget.cpp
+  SOURCE dmxselectionitem.cpp
+  SOURCE dmxselectiontree.cpp
+  SOURCE dmxwizard.cpp
+  SOURCE logtextedit.cpp
+  SOURCE main.cpp
+  SOURCE outputreader.cpp
+  SOURCE selectiontreeitem.cpp
+  SOURCE selectiontreesubitem.cpp
+  SOURCE utilities.cpp
+  SOURCE(TARGET_WIN) dmx.rc
+
+  HEADER chaptermanager.h
+  HEADER_QT4 dmx.h
+  HEADER dmxconsole.h
+  HEADER_QT4 dmxlogwidget.h
+  HEADER dmxselectionitem.h
+  HEADER_QT4 dmxselectiontree.h
+  HEADER_QT4 dmxwizard.h
+  HEADER_QT4 logtextedit.h
+  HEADER_QT4 outputreader.h
+  HEADER selectiontreeitem.h
+  HEADER selectiontreesubitem.h
+  HEADER utilities.h
+ =20
+  UI_FORM_QT4 dmxlogwidget.ui
+  UI_FORM_QT4 dmxwizard.ui
+ =20
+  RESOURCE_QT4 dmxwizard.qrc
+}


Property changes on: trunk/DvdMenuXtractor/DvdMenuXtractor.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/chaptermanager.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/chaptermanager.h	2007-02-17 10:34:40 UTC (rev 1=
276)
+++ trunk/DvdMenuXtractor/chaptermanager.h	2007-02-17 10:55:54 UTC (rev 1=
277)
@@ -1,40 +1,40 @@
-#ifndef CHAPTER_MANAGER_H
-#define CHAPTER_MANAGER_H
-
-#include <QString>
-#include "vobparser/IFOFile.h"
-
-class QDomNode;
-class QDomElement;
-class QDomDocument;
-
-class ChapterManager
-{
-public:
-	ChapterManager(unsigned xmlIdentCount)
-		: INDENT_COUNT(xmlIdentCount)
-	{
-	}
-	bool generateScript(const IFOFile& ifoFile, const QString& filename, ui=
nt16_t title, const QString& editionUID) const;
-	bool generateMenuScript(const IFOFile& ifoFile, const QString& filename=
, uint16_t title, const QString& editionUID) const;
-
-	static QString INFO_SUFFIX;
-	static QString CHAPTER_SUFFIX;
-
-private:
-	void generateInfoScript(const QString& filename, uint16_t title, const =
QString& editionUID) const;
-=09
-	static QDomElement CreateDOMElement(QDomDocument& document, const QStri=
ng& elementName, const QString& content);
-	static void AddChapterTime(QDomDocument& document, QDomNode& parent, ui=
nt64_t start_time, uint64_t end_time);
-	static void AddCodecPrivateData(QDomDocument& document, QDomNode& paren=
t, const unsigned char *buffer, unsigned int size, bool createChapterProc=
essElement =3D true);
-	static void AddPGCCommands(QDomDocument& document, QDomNode& parent, co=
nst pgc_command_tbl_t * command_tbl);
-	static uint64_t AddProgram(QDomDocument& document, QDomNode& parent, co=
nst pgc_t *pgc, const QString& PgcUID, int program_number, const CellsLis=
tType& cell_list, int16_t pgc_num, const ttu_t *ptts, int title);
-	static uint64_t AddPGC(QDomDocument& document, QDomNode& parent, const =
pgc_t * pgc, uint16_t pgc_num, unsigned char pgc_type, const CellsListTyp=
e & cell_list, const ttu_t * ptts, int title);
-	static QString GetPGCType(unsigned char entry_id);
-	static uint64_t HandleLanguageUnit(QDomDocument& document, QDomNode& pa=
rent, const IFOFile& _ifo, int title);
-
-	uint8_t familyUID[16];
-	unsigned INDENT_COUNT;
-};
-
+#ifndef CHAPTER_MANAGER_H
+#define CHAPTER_MANAGER_H
+
+#include <QString>
+#include "vobparser/IFOFile.h"
+
+class QDomNode;
+class QDomElement;
+class QDomDocument;
+
+class ChapterManager
+{
+public:
+	ChapterManager(unsigned xmlIdentCount)
+		: INDENT_COUNT(xmlIdentCount)
+	{
+	}
+	bool generateScript(const IFOFile& ifoFile, const QString& filename, ui=
nt16_t title, const QString& editionUID) const;
+	bool generateMenuScript(const IFOFile& ifoFile, const QString& filename=
, uint16_t title, const QString& editionUID) const;
+
+	static QString INFO_SUFFIX;
+	static QString CHAPTER_SUFFIX;
+
+private:
+	void generateInfoScript(const QString& filename, uint16_t title, const =
QString& editionUID) const;
+=09
+	static QDomElement CreateDOMElement(QDomDocument& document, const QStri=
ng& elementName, const QString& content);
+	static void AddChapterTime(QDomDocument& document, QDomNode& parent, ui=
nt64_t start_time, uint64_t end_time);
+	static void AddCodecPrivateData(QDomDocument& document, QDomNode& paren=
t, const unsigned char *buffer, unsigned int size, bool createChapterProc=
essElement =3D true);
+	static void AddPGCCommands(QDomDocument& document, QDomNode& parent, co=
nst pgc_command_tbl_t * command_tbl);
+	static uint64_t AddProgram(QDomDocument& document, QDomNode& parent, co=
nst pgc_t *pgc, const QString& PgcUID, int program_number, const CellsLis=
tType& cell_list, int16_t pgc_num, const ttu_t *ptts, int title);
+	static uint64_t AddPGC(QDomDocument& document, QDomNode& parent, const =
pgc_t * pgc, uint16_t pgc_num, unsigned char pgc_type, const CellsListTyp=
e & cell_list, const ttu_t * ptts, int title);
+	static QString GetPGCType(unsigned char entry_id);
+	static uint64_t HandleLanguageUnit(QDomDocument& document, QDomNode& pa=
rent, const IFOFile& _ifo, int title);
+
+	uint8_t familyUID[16];
+	unsigned INDENT_COUNT;
+};
+
 #endif //CHAPTER_MANAGER_H
\ No newline at end of file


Property changes on: trunk/DvdMenuXtractor/chaptermanager.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/config.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/config.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/DvdMenuXtractor/config.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,31 +1,31 @@
-#define CONFIG_STATIC
-#define CONFIG_UNICODE
-//#define CONFIG_MULTITHREAD
-//#define CONFIG_MSVCRT
-
-//-----------
-// failsafes
-
-#if !defined(ARM) || defined(TARGET_SYMBIAN)
-#undef CONFIG_WMMX
-#endif
-
-#if !defined(IX86) || defined(TARGET_SYMBIAN)
-#undef CONFIG_MMX
-#endif
-
-#if !defined(CONFIG_UNICODE) && (defined(TARGET_WINCE) || defined(TARGET=
_SYMBIAN))
-#define CONFIG_UNICODE
-#endif
-
-#if defined(CONFIG_MULTITHREAD) && (defined(TARGET_SYMBIAN) || defined(T=
ARGET_PALMOS))
-#undef CONFIG_MULTITHREAD
-#endif
-
-#if defined(CONFIG_UNICODE) && (defined(TARGET_PALMOS) || defined(TARGET=
_LINUX))
-#undef CONFIG_UNICODE
-#endif
-
-#if !defined(CONFIG_STATIC) && defined(TARGET_PALMOS) && defined(IX86)
-#define CONFIG_STATIC
-#endif
+#define CONFIG_STATIC
+#define CONFIG_UNICODE
+//#define CONFIG_MULTITHREAD
+//#define CONFIG_MSVCRT
+
+//-----------
+// failsafes
+
+#if !defined(ARM) || defined(TARGET_SYMBIAN)
+#undef CONFIG_WMMX
+#endif
+
+#if !defined(IX86) || defined(TARGET_SYMBIAN)
+#undef CONFIG_MMX
+#endif
+
+#if !defined(CONFIG_UNICODE) && (defined(TARGET_WINCE) || defined(TARGET=
_SYMBIAN))
+#define CONFIG_UNICODE
+#endif
+
+#if defined(CONFIG_MULTITHREAD) && (defined(TARGET_SYMBIAN) || defined(T=
ARGET_PALMOS))
+#undef CONFIG_MULTITHREAD
+#endif
+
+#if defined(CONFIG_UNICODE) && (defined(TARGET_PALMOS) || defined(TARGET=
_LINUX))
+#undef CONFIG_UNICODE
+#endif
+
+#if !defined(CONFIG_STATIC) && defined(TARGET_PALMOS) && defined(IX86)
+#define CONFIG_STATIC
+#endif


Property changes on: trunk/DvdMenuXtractor/config.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/dmx.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/dmxconsole.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/dmxconsole.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/DvdMenuXtractor/dmxconsole.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,30 +1,30 @@
-#ifndef DMXCONSOLE_H
-#define DMXCONSOLE_H
-
-#include "dmx.h"
-
-class DMXConsole
-{
-public:
-	DMXConsole(char *arguments[], int argumentCount);
-  ~DMXConsole();
-
-	void extract();
-
-	static void ShowUsage();
-
-private:
-	bool ready_;
-	QString toolsPath_;
-	QString sourcePath_;
-	QString destinationPath_;
-	DMX::SelectionType selectionItems_;
-
-	enum {TITLE_INDEX =3D 0, MENU_INDEX, VIDEO_INDEX,
-				AUDIO_TRACKS_INDEX, SUBTITLE_TRACKS_INDEX, ITEM_COUNT};
-=09
-	QStringList extractTrackNumbers(const QString& trackNumberString);
-	DMX::SelectionType generateSelectionItems(const QString& selectionStrin=
g);
-};
-
-#endif // DMXCONSOLE_H
+#ifndef DMXCONSOLE_H
+#define DMXCONSOLE_H
+
+#include "dmx.h"
+
+class DMXConsole
+{
+public:
+	DMXConsole(char *arguments[], int argumentCount);
+  ~DMXConsole();
+
+	void extract();
+
+	static void ShowUsage();
+
+private:
+	bool ready_;
+	QString toolsPath_;
+	QString sourcePath_;
+	QString destinationPath_;
+	DMX::SelectionType selectionItems_;
+
+	enum {TITLE_INDEX =3D 0, MENU_INDEX, VIDEO_INDEX,
+				AUDIO_TRACKS_INDEX, SUBTITLE_TRACKS_INDEX, ITEM_COUNT};
+=09
+	QStringList extractTrackNumbers(const QString& trackNumberString);
+	DMX::SelectionType generateSelectionItems(const QString& selectionStrin=
g);
+};
+
+#endif // DMXCONSOLE_H


Property changes on: trunk/DvdMenuXtractor/dmxconsole.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/dmxlogwidget.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/dmxlogwidget.h	2007-02-17 10:34:40 UTC (rev 127=
6)
+++ trunk/DvdMenuXtractor/dmxlogwidget.h	2007-02-17 10:55:54 UTC (rev 127=
7)
@@ -1,28 +1,28 @@
-#ifndef DMXLOGWIDGET_H
-#define DMXLOGWIDGET_H
-
-#include <QWidget>
-#include "ui_dmxlogwidget.h"
-
-class DMXLogWidget : public QWidget
-{
-    Q_OBJECT
-
-public:
-  DMXLogWidget(QWidget *parent =3D 0);
-  ~DMXLogWidget();
-
-signals:
-	void closed();
-
-protected:
-	virtual void closeEvent(QCloseEvent *event);
-
-private slots:
-	void saveButtonClicked();
-
-private:
-    Ui::DMXLogWidgetClass ui;
-};
-
-#endif // DMXLOGWIDGET_H
+#ifndef DMXLOGWIDGET_H
+#define DMXLOGWIDGET_H
+
+#include <QWidget>
+#include "ui_dmxlogwidget.h"
+
+class DMXLogWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+  DMXLogWidget(QWidget *parent =3D 0);
+  ~DMXLogWidget();
+
+signals:
+	void closed();
+
+protected:
+	virtual void closeEvent(QCloseEvent *event);
+
+private slots:
+	void saveButtonClicked();
+
+private:
+    Ui::DMXLogWidgetClass ui;
+};
+
+#endif // DMXLOGWIDGET_H


Property changes on: trunk/DvdMenuXtractor/dmxlogwidget.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/dmxselectionitem.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/dmxselectiontree.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/dmxselectiontree.h	2007-02-17 10:34:40 UTC (rev=
 1276)
+++ trunk/DvdMenuXtractor/dmxselectiontree.h	2007-02-17 10:55:54 UTC (rev=
 1277)
@@ -1,22 +1,22 @@
-#ifndef DMX_SELECTIONTREE_H
-#define DMX_SELECTIONTREE_H
-
-#include "dmx.h"
-#include <QTreeWidget>
-
-class DMXSelectionTree : public QTreeWidget
-{
-	Q_OBJECT
-
-public:
-  DMXSelectionTree(QWidget *parent);
-  ~DMXSelectionTree();
-
-	DMX::SelectionType getSelection() const;
-	bool loadIFOFile(const QString& path);
-
-private:
-	IFOFile *ifoFile_;
-};
-
-#endif // DMX_SELECTIONTREE_H
+#ifndef DMX_SELECTIONTREE_H
+#define DMX_SELECTIONTREE_H
+
+#include "dmx.h"
+#include <QTreeWidget>
+
+class DMXSelectionTree : public QTreeWidget
+{
+	Q_OBJECT
+
+public:
+  DMXSelectionTree(QWidget *parent);
+  ~DMXSelectionTree();
+
+	DMX::SelectionType getSelection() const;
+	bool loadIFOFile(const QString& path);
+
+private:
+	IFOFile *ifoFile_;
+};
+
+#endif // DMX_SELECTIONTREE_H


Property changes on: trunk/DvdMenuXtractor/dmxselectiontree.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/dmxwizard.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/dmxwizard.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/DvdMenuXtractor/dmxwizard.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,40 +1,40 @@
-#ifndef DMXWIZARD_H
-#define DMXWIZARD_H
-
-#include <QDialog>
-#include "ui_dmxwizard.h"
-#include "dmxlogwidget.h"
-
-class DMXWizard : public QDialog
-{
-    Q_OBJECT
-
-public:
-   DMXWizard(QWidget *parent =3D 0);
-   ~DMXWizard();
-
-protected:
-	void closeEvent(QCloseEvent* evt);
-
-private slots:
-	void backButtonClicked();
-	void nextButtonClicked();
-	void browseButtonClicked();
-	void extractionFinished();
-	void pathEditTextChanged(const QString& path);
-	void extractionStepChanged(const QString& text);
-
-private:
-  Ui::DMXWizardClass ui;
-=09
-	DMX dmx;
-	DMXLogWidget logWidget_;
-
-	enum {SETTINGS_PAGE_INDEX =3D 0, SELECTION_PAGE_INDEX, EXTRACTION_PAGE_=
INDEX};
-
-	void setupSlots();
-	void loadSettings();
-	void storeSettings();
-};
-
-#endif // DMXWIZARD_H
+#ifndef DMXWIZARD_H
+#define DMXWIZARD_H
+
+#include <QDialog>
+#include "ui_dmxwizard.h"
+#include "dmxlogwidget.h"
+
+class DMXWizard : public QDialog
+{
+    Q_OBJECT
+
+public:
+   DMXWizard(QWidget *parent =3D 0);
+   ~DMXWizard();
+
+protected:
+	void closeEvent(QCloseEvent* evt);
+
+private slots:
+	void backButtonClicked();
+	void nextButtonClicked();
+	void browseButtonClicked();
+	void extractionFinished();
+	void pathEditTextChanged(const QString& path);
+	void extractionStepChanged(const QString& text);
+
+private:
+  Ui::DMXWizardClass ui;
+=09
+	DMX dmx;
+	DMXLogWidget logWidget_;
+
+	enum {SETTINGS_PAGE_INDEX =3D 0, SELECTION_PAGE_INDEX, EXTRACTION_PAGE_=
INDEX};
+
+	void setupSlots();
+	void loadSettings();
+	void storeSettings();
+};
+
+#endif // DMXWIZARD_H


Property changes on: trunk/DvdMenuXtractor/dmxwizard.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/bswap.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/cmd_print.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/dvd_input.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/dvd_reader.=
h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/dvd_udf.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/libdvdread/dvdread/dvdread.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/libdvdread/dvdread/dvdread.proj	2007-02-17 10:3=
4:40 UTC (rev 1276)
+++ trunk/DvdMenuXtractor/libdvdread/dvdread/dvdread.proj	2007-02-17 10:5=
5:54 UTC (rev 1277)
@@ -1,35 +1,35 @@
-#include "*/*.proj"
-
-LIB dvdread
-{
-  USE(TARGET_WIN) c99msvc
-  USE(TARGET_WIN) posixmsvc
-  DEFINE STDC_HEADERS
-
-  SOURCE cmd_print.c
-  SOURCE dvd_input.c
-  SOURCE dvd_reader.c
-  SOURCE dvd_udf.c
-  SOURCE ifo_print.c
-  SOURCE ifo_read.c
-  SOURCE md5.c
-  SOURCE nav_print.c
-  SOURCE nav_read.c
-
-  HEADER bswap.h
-  HEADER cmd_print.h
-  HEADER dvd_input.h
-  HEADER dvd_reader.h
-  HEADER dvd_udf.h
-  HEADER dvdread_internal.h
-  HEADER ifo_print.h
-  HEADER ifo_read.h
-  HEADER ifo_types.h
-  HEADER md5.h
-  HEADER nav_print.h
-  HEADER nav_read.h
-  HEADER nav_types.h
- =20
-  INCLUDE(TARGET_WIN) ../win32
-  INCLUDE ..
-}
+#include "*/*.proj"
+
+LIB dvdread
+{
+  USE(TARGET_WIN) c99msvc
+  USE(TARGET_WIN) posixmsvc
+  DEFINE STDC_HEADERS
+
+  SOURCE cmd_print.c
+  SOURCE dvd_input.c
+  SOURCE dvd_reader.c
+  SOURCE dvd_udf.c
+  SOURCE ifo_print.c
+  SOURCE ifo_read.c
+  SOURCE md5.c
+  SOURCE nav_print.c
+  SOURCE nav_read.c
+
+  HEADER bswap.h
+  HEADER cmd_print.h
+  HEADER dvd_input.h
+  HEADER dvd_reader.h
+  HEADER dvd_udf.h
+  HEADER dvdread_internal.h
+  HEADER ifo_print.h
+  HEADER ifo_read.h
+  HEADER ifo_types.h
+  HEADER md5.h
+  HEADER nav_print.h
+  HEADER nav_read.h
+  HEADER nav_types.h
+ =20
+  INCLUDE(TARGET_WIN) ../win32
+  INCLUDE ..
+}


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/dvdread.pro=
j
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/dvdread_int=
ernal.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/ifo_print.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/ifo_read.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/ifo_types.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/md5.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/nav_print.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/nav_read.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/dvdread/nav_types.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/libdvdread/libdvdread.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/libdvdread/libdvdread.proj	2007-02-17 10:34:40 =
UTC (rev 1276)
+++ trunk/DvdMenuXtractor/libdvdread/libdvdread.proj	2007-02-17 10:55:54 =
UTC (rev 1277)
@@ -1,11 +1,11 @@
-#include "*/*.proj"
-
-WORKSPACE dvdread
-{
-  USE dvdread
-  USE disc_id
-  USE filestat
-  USE ifo_dump
-  USE play_title
-  USE title_info
-}
+#include "*/*.proj"
+
+WORKSPACE dvdread
+{
+  USE dvdread
+  USE disc_id
+  USE filestat
+  USE ifo_dump
+  USE play_title
+  USE title_info
+}


Property changes on: trunk/DvdMenuXtractor/libdvdread/libdvdread.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/libdvdread/src/src.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/libdvdread/src/src.proj	2007-02-17 10:34:40 UTC=
 (rev 1276)
+++ trunk/DvdMenuXtractor/libdvdread/src/src.proj	2007-02-17 10:55:54 UTC=
 (rev 1277)
@@ -1,51 +1,51 @@
-#include "*/*.proj"
-
-CON disc_id
-{
-  USE dvdread
-
-  SOURCE disc_id.c
- =20
-  INCLUDE(TARGET_WIN) ../win32
-  INCLUDE ..
-}
-
-CON filestat
-{
-  USE dvdread
-
-  SOURCE filestat.c
- =20
-  INCLUDE(TARGET_WIN) ../win32
-  INCLUDE ..
-}
-
-CON ifo_dump
-{
-  USE dvdread
-
-  SOURCE ifo_dump.c
- =20
-  INCLUDE(TARGET_WIN) ../win32
-  INCLUDE ..
-}
-
-CON play_title
-{
-  USE dvdread
-
-  SOURCE play_title.c
- =20
-  INCLUDE(TARGET_WIN) ../win32
-  INCLUDE ..
-}
-
-CON title_info
-{
-  USE dvdread
-
-  SOURCE title_info.c
- =20
-  INCLUDE(TARGET_WIN) ../win32
-  INCLUDE ..
-}
+#include "*/*.proj"
+
+CON disc_id
+{
+  USE dvdread
+
+  SOURCE disc_id.c
+ =20
+  INCLUDE(TARGET_WIN) ../win32
+  INCLUDE ..
+}
+
+CON filestat
+{
+  USE dvdread
+
+  SOURCE filestat.c
+ =20
+  INCLUDE(TARGET_WIN) ../win32
+  INCLUDE ..
+}
+
+CON ifo_dump
+{
+  USE dvdread
+
+  SOURCE ifo_dump.c
+ =20
+  INCLUDE(TARGET_WIN) ../win32
+  INCLUDE ..
+}
+
+CON play_title
+{
+  USE dvdread
+
+  SOURCE play_title.c
+ =20
+  INCLUDE(TARGET_WIN) ../win32
+  INCLUDE ..
+}
+
+CON title_info
+{
+  USE dvdread
+
+  SOURCE title_info.c
+ =20
+  INCLUDE(TARGET_WIN) ../win32
+  INCLUDE ..
+}


Property changes on: trunk/DvdMenuXtractor/libdvdread/src/src.proj
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/libdvdread/win32/config.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/libdvdread/win32/dirent.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/libdvdread/win32/dirent.h	2007-02-17 10:34:40 U=
TC (rev 1276)
+++ trunk/DvdMenuXtractor/libdvdread/win32/dirent.h	2007-02-17 10:55:54 U=
TC (rev 1277)
@@ -1,147 +1,147 @@
-/*
- * DIRENT.H (formerly DIRLIB.H)
- *
- * by M. J. Weinstein   Released to public domain 1-Jan-89
- *
- * Because I have heard that this feature (opendir, readdir, closedir)
- * it so useful for programmers coming from UNIX or attempting to port
- * UNIX code, and because it is reasonably light weight, I have included
- * it in the Mingw32 package. I have also added an implementation of
- * rewinddir, seekdir and telldir.
- *   - Colin Peters <[email protected]>
- *
- *  This code is distributed in the hope that is will be useful but
- *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- *  DISCLAIMED. This includeds but is not limited to warranties of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Revision: 1.1 $
- * $Author: ds $
- * $Date: 2004/04/29 02:52:21 $
- *
- */
-
-#ifndef	__STRICT_ANSI__
-
-#ifndef _DIRENT_H_
-#define _DIRENT_H_
-
-/* All the headers include this file. */
-/*#include <_mingw.h>*/
-
-#include <io.h>
-
-#ifndef RC_INVOKED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct dirent
-{
-	long		d_ino;		/* Always zero. */
-	unsigned short	d_reclen;	/* Always zero. */
-	unsigned short	d_namlen;	/* Length of name in d_name. */
-	char*		d_name;		/* File name. */
-	/* NOTE: The name in the dirent structure points to the name in the
-	 *       finddata_t structure in the DIR. */
-};
-
-/*
- * This is an internal data structure. Good programmers will not use it
- * except as an argument to one of the functions below.
- * dd_stat field is now int (was short in older versions).
- */
-typedef struct
-{
-	/* disk transfer area for this dir */
-	struct _finddata_t	dd_dta;
-
-	/* dirent struct to return from dir (NOTE: this makes this thread
-	 * safe as long as only one thread uses a particular DIR struct at
-	 * a time) */
-	struct dirent		dd_dir;
-
-	/* _findnext handle */
-	long			dd_handle;
-
-	/*
-         * Status of search:
-	 *   0 =3D not started yet (next entry to read is first entry)
-	 *  -1 =3D off the end
-	 *   positive =3D 0 based index of next entry
-	 */
-	int			dd_stat;
-
-	/* given path for dir with search pattern (struct is extended) */
-	char			dd_name[1];
-} DIR;
-
-DIR*		opendir (const char*);
-struct dirent*	readdir (DIR*);
-int		closedir (DIR*);
-void		rewinddir (DIR*);
-long		telldir (DIR*);
-void		seekdir (DIR*, long);
-
-
-/* wide char versions */
-
-struct _wdirent
-{
-	long		d_ino;		/* Always zero. */
-	unsigned short	d_reclen;	/* Always zero. */
-	unsigned short	d_namlen;	/* Length of name in d_name. */
-	wchar_t*	d_name;		/* File name. */
-	/* NOTE: The name in the dirent structure points to the name in the	 * =
      wfinddata_t structure in the _WDIR. */
-};
-
-/*
- * This is an internal data structure. Good programmers will not use it
- * except as an argument to one of the functions below.
- */
-typedef struct
-{
-	/* disk transfer area for this dir */
-	struct _wfinddata_t	dd_dta;
-
-	/* dirent struct to return from dir (NOTE: this makes this thread
-	 * safe as long as only one thread uses a particular DIR struct at
-	 * a time) */
-	struct _wdirent		dd_dir;
-
-	/* _findnext handle */
-	long			dd_handle;
-
-	/*
-         * Status of search:
-	 *   0 =3D not started yet (next entry to read is first entry)
-	 *  -1 =3D off the end
-	 *   positive =3D 0 based index of next entry
-	 */
-	int			dd_stat;
-
-	/* given path for dir with search pattern (struct is extended) */
-	wchar_t			dd_name[1];
-} _WDIR;
-
-
-
-_WDIR*		_wopendir (const wchar_t*);
-struct _wdirent* _wreaddir (_WDIR*);
-int		_wclosedir (_WDIR*);
-void		_wrewinddir (_WDIR*);
-long		_wtelldir (_WDIR*);
-void		_wseekdir (_WDIR*, long);
-
-
-#ifdef	__cplusplus
-}
-#endif
-
-#endif	/* Not RC_INVOKED */
-
-#endif	/* Not _DIRENT_H_ */
-
-#endif	/* Not __STRICT_ANSI__ */
-
+/*
+ * DIRENT.H (formerly DIRLIB.H)
+ *
+ * by M. J. Weinstein   Released to public domain 1-Jan-89
+ *
+ * Because I have heard that this feature (opendir, readdir, closedir)
+ * it so useful for programmers coming from UNIX or attempting to port
+ * UNIX code, and because it is reasonably light weight, I have included
+ * it in the Mingw32 package. I have also added an implementation of
+ * rewinddir, seekdir and telldir.
+ *   - Colin Peters <[email protected]>
+ *
+ *  This code is distributed in the hope that is will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includeds but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: ds $
+ * $Date: 2004/04/29 02:52:21 $
+ *
+ */
+
+#ifndef	__STRICT_ANSI__
+
+#ifndef _DIRENT_H_
+#define _DIRENT_H_
+
+/* All the headers include this file. */
+/*#include <_mingw.h>*/
+
+#include <io.h>
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct dirent
+{
+	long		d_ino;		/* Always zero. */
+	unsigned short	d_reclen;	/* Always zero. */
+	unsigned short	d_namlen;	/* Length of name in d_name. */
+	char*		d_name;		/* File name. */
+	/* NOTE: The name in the dirent structure points to the name in the
+	 *       finddata_t structure in the DIR. */
+};
+
+/*
+ * This is an internal data structure. Good programmers will not use it
+ * except as an argument to one of the functions below.
+ * dd_stat field is now int (was short in older versions).
+ */
+typedef struct
+{
+	/* disk transfer area for this dir */
+	struct _finddata_t	dd_dta;
+
+	/* dirent struct to return from dir (NOTE: this makes this thread
+	 * safe as long as only one thread uses a particular DIR struct at
+	 * a time) */
+	struct dirent		dd_dir;
+
+	/* _findnext handle */
+	long			dd_handle;
+
+	/*
+         * Status of search:
+	 *   0 =3D not started yet (next entry to read is first entry)
+	 *  -1 =3D off the end
+	 *   positive =3D 0 based index of next entry
+	 */
+	int			dd_stat;
+
+	/* given path for dir with search pattern (struct is extended) */
+	char			dd_name[1];
+} DIR;
+
+DIR*		opendir (const char*);
+struct dirent*	readdir (DIR*);
+int		closedir (DIR*);
+void		rewinddir (DIR*);
+long		telldir (DIR*);
+void		seekdir (DIR*, long);
+
+
+/* wide char versions */
+
+struct _wdirent
+{
+	long		d_ino;		/* Always zero. */
+	unsigned short	d_reclen;	/* Always zero. */
+	unsigned short	d_namlen;	/* Length of name in d_name. */
+	wchar_t*	d_name;		/* File name. */
+	/* NOTE: The name in the dirent structure points to the name in the	 * =
      wfinddata_t structure in the _WDIR. */
+};
+
+/*
+ * This is an internal data structure. Good programmers will not use it
+ * except as an argument to one of the functions below.
+ */
+typedef struct
+{
+	/* disk transfer area for this dir */
+	struct _wfinddata_t	dd_dta;
+
+	/* dirent struct to return from dir (NOTE: this makes this thread
+	 * safe as long as only one thread uses a particular DIR struct at
+	 * a time) */
+	struct _wdirent		dd_dir;
+
+	/* _findnext handle */
+	long			dd_handle;
+
+	/*
+         * Status of search:
+	 *   0 =3D not started yet (next entry to read is first entry)
+	 *  -1 =3D off the end
+	 *   positive =3D 0 based index of next entry
+	 */
+	int			dd_stat;
+
+	/* given path for dir with search pattern (struct is extended) */
+	wchar_t			dd_name[1];
+} _WDIR;
+
+
+
+_WDIR*		_wopendir (const wchar_t*);
+struct _wdirent* _wreaddir (_WDIR*);
+int		_wclosedir (_WDIR*);
+void		_wrewinddir (_WDIR*);
+long		_wtelldir (_WDIR*);
+void		_wseekdir (_WDIR*, long);
+
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _DIRENT_H_ */
+
+#endif	/* Not __STRICT_ANSI__ */
+


Property changes on: trunk/DvdMenuXtractor/libdvdread/win32/dirent.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/libdvdread/win32/gtchar.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/libdvdread/win32/gtchar.h	2007-02-17 10:34:40 U=
TC (rev 1276)
+++ trunk/DvdMenuXtractor/libdvdread/win32/gtchar.h	2007-02-17 10:55:54 U=
TC (rev 1277)
@@ -1,402 +1,402 @@
-/*=20
- * tchar.h
- *
- * Unicode mapping layer for the standard C library. By including this
- * file and using the 't' names for string functions
- * (eg. _tprintf) you can make code which can be easily adapted to both
- * Unicode and non-unicode environments. In a unicode enabled compile de=
fine
- * _UNICODE before including tchar.h, otherwise the standard non-unicode
- * library functions will be used.
- *
- * Note that you still need to include string.h or stdlib.h etc. to defi=
ne
- * the appropriate functions. Also note that there are several defines
- * included for non-ANSI functions which are commonly available (but usi=
ng
- * the convention of prepending an underscore to non-ANSI library functi=
on
- * names).
- *
- * This file is part of the Mingw32 package.
- *
- * Contributors:
- *  Created by Colin Peters <[email protected]>
- *
- *  THIS SOFTWARE IS NOT COPYRIGHTED
- *
- *  This source code is offered for use in the public domain. You may
- *  use, modify or distribute it freely.
- *
- *  This code is distributed in the hope that it will be useful but
- *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- *  DISCLAIMED. This includes but is not limited to warranties of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Revision: 1.1 $
- * $Author: ds $
- * $Date: 2004/04/29 02:52:21 $
- *
- */
-
-#ifndef	_TCHAR_H_
-#define _TCHAR_H_
-
-/* All the headers include this file. */
-/*#include <_mingw.h>*/
-
-/*
- * NOTE: This tests _UNICODE, which is different from the UNICODE define
- *       used to differentiate Win32 API calls.
- */
-#ifdef	_UNICODE
-
-
-/*
- * Use TCHAR instead of char or wchar_t. It will be appropriately transl=
ated
- * if _UNICODE is correctly defined (or not).
- */
-#ifndef _TCHAR_DEFINED
-#ifndef RC_INVOKED
-typedef	wchar_t	TCHAR;
-typedef wchar_t _TCHAR;
-#endif	/* Not RC_INVOKED */
-#define _TCHAR_DEFINED
-#endif
-
-
-/*
- * __TEXT is a private macro whose specific use is to force the expansio=
n of a
- * macro passed as an argument to the macros _T or _TEXT.  DO NOT use th=
is
- * macro within your programs.  It's name and function could change with=
out
- * notice.
- */
-#define	__TEXT(q)	L##q
-
-/*  for porting from other Windows compilers */
-#if 0  // no  wide startup module
-#define _tmain      wmain
-#define _tWinMain   wWinMain
-#define _tenviron   _wenviron
-#define __targv     __wargv
-#endif
-
-/*
- * Unicode functions
- */
-#define _tstat		_wstat
-#define	_tprintf	wprintf
-#define	_ftprintf	fwprintf
-#define	_stprintf	swprintf
-#define	_sntprintf	_snwprintf
-#define	_vtprintf	vwprintf
-#define	_vftprintf	vfwprintf
-#define _vstprintf	vswprintf
-#define	_vsntprintf	_vsnwprintf
-#define	_tscanf		wscanf
-#define	_ftscanf	fwscanf
-#define	_stscanf	swscanf
-#define	_fgettc		fgetwc
-#define	_fgettchar	_fgetwchar
-#define	_fgetts		fgetws
-#define	_fputtc		fputwc
-#define	_fputtchar	_fputwchar
-#define	_fputts		fputws
-#define	_gettc		getwc
-#define	_getts		_getws
-#define	_puttc		putwc
-#define	_putts		_putws
-#define	_ungettc	ungetwc
-#define	_tcstod		wcstod
-#define	_tcstol		wcstol
-#define _tcstoul	wcstoul
-#define	_itot		_itow
-#define	_ltot		_ltow
-#define	_ultot		_ultow
-#define	_ttoi		_wtoi
-#define	_ttol		_wtol
-#define	_tcscat		wcscat
-#define	_tcscat_s	wcscat_s
-#define _tcschr		wcschr
-#define _tcscmp		wcscmp
-#define _tcscpy		wcscpy
-#define _tcscpy_s	wcscpy_s
-#define _tcscspn	wcscspn
-#define	_tcslen		wcslen
-#define	_tcsncat	wcsncat
-#define	_tcsncmp	wcsncmp
-#define	_tcsncpy	wcsncpy
-#define	_tcspbrk	wcspbrk
-#define	_tcsrchr	wcsrchr
-#define _tcsspn		wcsspn
-#define	_tcsstr		wcsstr
-#define _tcstok		wcstok
-#define	_tcsdup		_wcsdup
-#define	_tcsicmp	_wcsicmp
-#define	_tcsnicmp	_wcsnicmp
-#define	_tcsnset	_wcsnset
-#define	_tcsrev		_wcsrev
-#define _tcsset		_wcsset
-#define	_tcslwr		_wcslwr
-#define	_tcsupr		_wcsupr
-#define	_tcsxfrm	wcsxfrm
-#define	_tcscoll	wcscoll
-#define	_tcsicoll	_wcsicoll
-#define	_istalpha	iswalpha
-#define	_istupper	iswupper
-#define	_istlower	iswlower
-#define	_istdigit	iswdigit
-#define	_istxdigit	iswxdigit
-#define	_istspace	iswspace
-#define	_istpunct	iswpunct
-#define	_istalnum	iswalnum
-#define	_istprint	iswprint
-#define	_istgraph	iswgraph
-#define	_istcntrl	iswcntrl
-#define	_istascii	iswascii
-#define _totupper	towupper
-#define	_totlower	towlower
-#define _tcsftime	wcsftime
-/* Macro functions */=20
-#define _tcsdec     _wcsdec
-#define _tcsinc     _wcsinc
-#define _tcsnbcnt   _wcsncnt
-#define _tcsnccnt   _wcsncnt
-#define _tcsnextc   _wcsnextc
-#define _tcsninc    _wcsninc
-#define _tcsspnp    _wcsspnp
-#define _wcsdec(_wcs1, _wcs2) ((_wcs1)>=3D(_wcs2) ? NULL : (_wcs2)-1)
-#define _wcsinc(_wcs)  ((_wcs)+1)
-#define _wcsnextc(_wcs) ((unsigned int) *(_wcs))
-#define _wcsninc(_wcs, _inc) (((_wcs)+(_inc)))
-#define _wcsncnt(_wcs, _cnt) ((wcslen(_wcs)>_cnt) ? _count : wcslen(_wcs=
))
-#define _wcsspnp(_wcs1, _wcs2) ((*((_wcs1)+wcsspn(_wcs1,_wcs2))) ? ((_wc=
s1)+wcsspn(_wcs1,_wcs2)) : NULL)
-
-#if 1  /* defined __MSVCRT__ */
-/*
- *   These wide functions not in crtdll.dll.
- *   Define macros anyway so that _wfoo rather than _tfoo is undefined
- */
-#define _ttoi64     _wtoi64
-#define _i64tot     _i64tow
-#define _ui64tot    _ui64tow
-#define	_tasctime	_wasctime
-#define	_tctime		_wctime
-#define	_tstrdate	_wstrdate
-#define	_tstrtime	_wstrtime
-#define	_tutime		_wutime
-#define _tcsnccoll  _wcsncoll
-#define _tcsncoll   _wcsncoll
-#define _tcsncicoll _wcsnicoll
-#define _tcsnicoll  _wcsnicoll
-#define _taccess    _waccess
-#define _tchmod     _wchmod
-#define _tcreat     _wcreat
-#define _tfindfirst _wfindfirst
-#define _tfindnext  _wfindnext
-#define _tfdopen    _wfdopen
-#define _tfopen     _wfopen
-#define _tgetenv    _wgetenv
-#define _tputenv    _wputenv
-#define _tsearchenv _wsearchenv
-#define _tmakepath  _wmakepath
-#define _tsplitpath _wsplitpath
-#define _tfullpath  _wfullpath
-#define _tmktemp    _wmktemp
-#define _topen      _wopen
-#define _tremove    _wremove
-#define _trename    _wrename
-#define _tsopen     _wsopen
-#define _tsetlocale _wsetlocale
-#define _tunlink    _wunlink
-#define _tfinddata_t    _wfinddata_t
-#define _tfindfirsti64  _wfindfirsti64
-#define _tfindnexti64   _wfindnexti64
-#define _tfinddatai64_t _wfinddatai64_t
-#endif  /* __MSVCRT__ */
-
-/* dirent structures and functions */
-#define _tdirent	_wdirent
-#define _TDIR 		_WDIR
-#define _topendir	_wopendir
-#define _tclosedir	_wclosedir
-#define _treaddir	_wreaddir
-#define _trewinddir	_wrewinddir
-#define _ttelldir	_wtelldir
-#define _tseekdir	_wseekdir
-#else	/* Not _UNICODE */
-
-/*
- * TCHAR, the type you should use instead of char.
- */
-#ifndef _TCHAR_DEFINED
-#ifndef RC_INVOKED
-typedef char	TCHAR;
-typedef char	_TCHAR;
-#endif
-#define _TCHAR_DEFINED
-#endif
-
-/*
- * __TEXT is a private macro whose specific use is to force the expansio=
n of a
- * macro passed as an argument to the macros _T or _TEXT.  DO NOT use th=
is
- * macro within your programs.  It's name and function could change with=
out
- * notice.
- */
-#define	__TEXT(q)	q
-
-/*  for porting from other Windows compilers */
-#define _tmain      main
-#define _tWinMain   WinMain
-#define _tenviron  _environ
-#define __targv     __argv
-
-/*
- * Non-unicode (standard) functions
- */
-#define _tstat		_stat
-#define	_tprintf	printf
-#define _ftprintf	fprintf
-#define	_stprintf	sprintf
-#define	_sntprintf	_snprintf
-#define	_vtprintf	vprintf
-#define	_vftprintf	vfprintf
-#define _vstprintf	vsprintf
-#define	_vsntprintf	_vsnprintf
-#define	_tscanf		scanf
-#define	_ftscanf	fscanf
-#define	_stscanf	sscanf
-#define	_fgettc		fgetc
-#define	_fgettchar	_fgetchar
-#define	_fgetts		fgets
-#define	_fputtc		fputc
-#define	_fputtchar	_fputchar
-#define	_fputts		fputs
-#define _tfdopen	_fdopen
-#define	_tfopen		fopen
-#define	_tgetenv	getenv
-#define	_tputenv	_putenv
-#define	_tsearchenv	_searchenv
-#define	_tmakepath	_makepath
-#define	_tsplitpath	_splitpath
-#define	_tfullpath	_fullpath
-#define	_gettc		getc
-#define	_getts		gets
-#define	_puttc		putc
-#define	_putts		puts
-#define	_ungettc	ungetc
-#define	_tcstod		strtod
-#define	_tcstol		strtol
-#define _tcstoul	strtoul
-#define	_itot		_itoa
-#define	_ltot		_ltoa
-#define	_ultot		_ultoa
-#define	_ttoi		atoi
-#define	_ttol		atol
-#define	_tcscat		strcat
-#define	_tcscat_s	strcat_s
-#define _tcschr		strchr
-#define _tcscmp		strcmp
-#define _tcscpy		strcpy
-#define _tcscpy_s	strcpy_s
-#define _tcscspn	strcspn
-#define	_tcslen		strlen
-#define	_tcsncat	strncat
-#define	_tcsncmp	strncmp
-#define	_tcsncpy	strncpy
-#define	_tcspbrk	strpbrk
-#define	_tcsrchr	strrchr
-#define _tcsspn		strspn
-#define	_tcsstr		strstr
-#define _tcstok		strtok
-#define	_tcsdup		_strdup
-#define	_tcsicmp	_stricmp
-#define	_tcsnicmp	_strnicmp
-#define	_tcsnset	_strnset
-#define	_tcsrev		_strrev
-#define _tcsset		_strset
-#define	_tcslwr		_strlwr
-#define	_tcsupr		_strupr
-#define	_tcsxfrm	strxfrm
-#define	_tcscoll	strcoll
-#define	_tcsicoll	_stricoll
-#define	_istalpha	isalpha
-#define	_istupper	isupper
-#define	_istlower	islower
-#define	_istdigit	isdigit
-#define	_istxdigit	isxdigit
-#define	_istspace	isspace
-#define	_istpunct	ispunct
-#define	_istalnum	isalnum
-#define	_istprint	isprint
-#define	_istgraph	isgraph
-#define	_istcntrl	iscntrl
-#define	_istascii	isascii
-#define _totupper	toupper
-#define	_totlower	tolower
-#define	_tasctime	asctime
-#define	_tctime		ctime
-#define	_tstrdate	_strdate
-#define	_tstrtime	_strtime
-#define	_tutime		_utime
-#define _tcsftime	strftime
-/* Macro functions */=20
-#define _tcsdec     _strdec
-#define _tcsinc     _strinc
-#define _tcsnbcnt   _strncnt
-#define _tcsnccnt   _strncnt
-#define _tcsnextc   _strnextc
-#define _tcsninc    _strninc
-#define _tcsspnp    _strspnp
-#define _strdec(_str1, _str2) ((_str1)>=3D(_str2) ? NULL : (_str2)-1)
-#define _strinc(_str)  ((_str)+1)
-#define _strnextc(_str) ((unsigned int) *(_str))
-#define _strninc(_str, _inc) (((_str)+(_inc)))
-#define _strncnt(_str, _cnt) ((strlen(_str)>_cnt) ? _count : strlen(_str=
))
-#define _strspnp(_str1, _str2) ((*((_str1)+strspn(_str1,_str2))) ? ((_st=
r1)+strspn(_str1,_str2)) : NULL)
-
-#define _tchmod     _chmod
-#define _tcreat     _creat
-#define _tfindfirst _findfirst
-#define _tfindnext  _findnext
-#define _tmktemp    _mktemp
-#define _topen      _open
-#define _taccess    _access
-#define _tremove    remove
-#define _trename    rename
-#define _tsopen     _sopen
-#define _tsetlocale setlocale
-#define _tunlink    _unlink
-#define _tfinddata_t    _finddata_t
-
-#if 1  /* defined __MSVCRT__ */
-/* Not in crtdll.dll. Define macros anyway? */
-#define _ttoi64     _atoi64
-#define _i64tot     _i64toa
-#define _ui64tot    _ui64toa
-#define _tcsnccoll  _strncoll
-#define _tcsncoll   _strncoll
-#define _tcsncicoll _strnicoll
-#define _tcsnicoll  _strnicoll
-#define _tfindfirsti64  _findfirsti64
-#define _tfindnexti64   _findnexti64
-#define _tfinddatai64_t _finddatai64_t
-#endif  /* __MSVCRT__ */
-
-/* dirent structures and functions */
-#define _tdirent	dirent
-#define _TDIR 		DIR
-#define _topendir	opendir
-#define _tclosedir	closedir
-#define _treaddir	readdir
-#define _trewinddir	rewinddir
-#define _ttelldir	telldir
-#define _tseekdir	seekdir
-
-#endif	/* Not _UNICODE */
-
-/*
- * UNICODE a constant string when _UNICODE is defined else returns the s=
tring
- * unmodified.  Also defined in w32api/winnt.h.
- */
-#define _TEXT(x)	__TEXT(x)
-#define	_T(x)		__TEXT(x)
-
-#endif	/* Not _TCHAR_H_ */
-
+/*=20
+ * tchar.h
+ *
+ * Unicode mapping layer for the standard C library. By including this
+ * file and using the 't' names for string functions
+ * (eg. _tprintf) you can make code which can be easily adapted to both
+ * Unicode and non-unicode environments. In a unicode enabled compile de=
fine
+ * _UNICODE before including tchar.h, otherwise the standard non-unicode
+ * library functions will be used.
+ *
+ * Note that you still need to include string.h or stdlib.h etc. to defi=
ne
+ * the appropriate functions. Also note that there are several defines
+ * included for non-ANSI functions which are commonly available (but usi=
ng
+ * the convention of prepending an underscore to non-ANSI library functi=
on
+ * names).
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <[email protected]>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: ds $
+ * $Date: 2004/04/29 02:52:21 $
+ *
+ */
+
+#ifndef	_TCHAR_H_
+#define _TCHAR_H_
+
+/* All the headers include this file. */
+/*#include <_mingw.h>*/
+
+/*
+ * NOTE: This tests _UNICODE, which is different from the UNICODE define
+ *       used to differentiate Win32 API calls.
+ */
+#ifdef	_UNICODE
+
+
+/*
+ * Use TCHAR instead of char or wchar_t. It will be appropriately transl=
ated
+ * if _UNICODE is correctly defined (or not).
+ */
+#ifndef _TCHAR_DEFINED
+#ifndef RC_INVOKED
+typedef	wchar_t	TCHAR;
+typedef wchar_t _TCHAR;
+#endif	/* Not RC_INVOKED */
+#define _TCHAR_DEFINED
+#endif
+
+
+/*
+ * __TEXT is a private macro whose specific use is to force the expansio=
n of a
+ * macro passed as an argument to the macros _T or _TEXT.  DO NOT use th=
is
+ * macro within your programs.  It's name and function could change with=
out
+ * notice.
+ */
+#define	__TEXT(q)	L##q
+
+/*  for porting from other Windows compilers */
+#if 0  // no  wide startup module
+#define _tmain      wmain
+#define _tWinMain   wWinMain
+#define _tenviron   _wenviron
+#define __targv     __wargv
+#endif
+
+/*
+ * Unicode functions
+ */
+#define _tstat		_wstat
+#define	_tprintf	wprintf
+#define	_ftprintf	fwprintf
+#define	_stprintf	swprintf
+#define	_sntprintf	_snwprintf
+#define	_vtprintf	vwprintf
+#define	_vftprintf	vfwprintf
+#define _vstprintf	vswprintf
+#define	_vsntprintf	_vsnwprintf
+#define	_tscanf		wscanf
+#define	_ftscanf	fwscanf
+#define	_stscanf	swscanf
+#define	_fgettc		fgetwc
+#define	_fgettchar	_fgetwchar
+#define	_fgetts		fgetws
+#define	_fputtc		fputwc
+#define	_fputtchar	_fputwchar
+#define	_fputts		fputws
+#define	_gettc		getwc
+#define	_getts		_getws
+#define	_puttc		putwc
+#define	_putts		_putws
+#define	_ungettc	ungetwc
+#define	_tcstod		wcstod
+#define	_tcstol		wcstol
+#define _tcstoul	wcstoul
+#define	_itot		_itow
+#define	_ltot		_ltow
+#define	_ultot		_ultow
+#define	_ttoi		_wtoi
+#define	_ttol		_wtol
+#define	_tcscat		wcscat
+#define	_tcscat_s	wcscat_s
+#define _tcschr		wcschr
+#define _tcscmp		wcscmp
+#define _tcscpy		wcscpy
+#define _tcscpy_s	wcscpy_s
+#define _tcscspn	wcscspn
+#define	_tcslen		wcslen
+#define	_tcsncat	wcsncat
+#define	_tcsncmp	wcsncmp
+#define	_tcsncpy	wcsncpy
+#define	_tcspbrk	wcspbrk
+#define	_tcsrchr	wcsrchr
+#define _tcsspn		wcsspn
+#define	_tcsstr		wcsstr
+#define _tcstok		wcstok
+#define	_tcsdup		_wcsdup
+#define	_tcsicmp	_wcsicmp
+#define	_tcsnicmp	_wcsnicmp
+#define	_tcsnset	_wcsnset
+#define	_tcsrev		_wcsrev
+#define _tcsset		_wcsset
+#define	_tcslwr		_wcslwr
+#define	_tcsupr		_wcsupr
+#define	_tcsxfrm	wcsxfrm
+#define	_tcscoll	wcscoll
+#define	_tcsicoll	_wcsicoll
+#define	_istalpha	iswalpha
+#define	_istupper	iswupper
+#define	_istlower	iswlower
+#define	_istdigit	iswdigit
+#define	_istxdigit	iswxdigit
+#define	_istspace	iswspace
+#define	_istpunct	iswpunct
+#define	_istalnum	iswalnum
+#define	_istprint	iswprint
+#define	_istgraph	iswgraph
+#define	_istcntrl	iswcntrl
+#define	_istascii	iswascii
+#define _totupper	towupper
+#define	_totlower	towlower
+#define _tcsftime	wcsftime
+/* Macro functions */=20
+#define _tcsdec     _wcsdec
+#define _tcsinc     _wcsinc
+#define _tcsnbcnt   _wcsncnt
+#define _tcsnccnt   _wcsncnt
+#define _tcsnextc   _wcsnextc
+#define _tcsninc    _wcsninc
+#define _tcsspnp    _wcsspnp
+#define _wcsdec(_wcs1, _wcs2) ((_wcs1)>=3D(_wcs2) ? NULL : (_wcs2)-1)
+#define _wcsinc(_wcs)  ((_wcs)+1)
+#define _wcsnextc(_wcs) ((unsigned int) *(_wcs))
+#define _wcsninc(_wcs, _inc) (((_wcs)+(_inc)))
+#define _wcsncnt(_wcs, _cnt) ((wcslen(_wcs)>_cnt) ? _count : wcslen(_wcs=
))
+#define _wcsspnp(_wcs1, _wcs2) ((*((_wcs1)+wcsspn(_wcs1,_wcs2))) ? ((_wc=
s1)+wcsspn(_wcs1,_wcs2)) : NULL)
+
+#if 1  /* defined __MSVCRT__ */
+/*
+ *   These wide functions not in crtdll.dll.
+ *   Define macros anyway so that _wfoo rather than _tfoo is undefined
+ */
+#define _ttoi64     _wtoi64
+#define _i64tot     _i64tow
+#define _ui64tot    _ui64tow
+#define	_tasctime	_wasctime
+#define	_tctime		_wctime
+#define	_tstrdate	_wstrdate
+#define	_tstrtime	_wstrtime
+#define	_tutime		_wutime
+#define _tcsnccoll  _wcsncoll
+#define _tcsncoll   _wcsncoll
+#define _tcsncicoll _wcsnicoll
+#define _tcsnicoll  _wcsnicoll
+#define _taccess    _waccess
+#define _tchmod     _wchmod
+#define _tcreat     _wcreat
+#define _tfindfirst _wfindfirst
+#define _tfindnext  _wfindnext
+#define _tfdopen    _wfdopen
+#define _tfopen     _wfopen
+#define _tgetenv    _wgetenv
+#define _tputenv    _wputenv
+#define _tsearchenv _wsearchenv
+#define _tmakepath  _wmakepath
+#define _tsplitpath _wsplitpath
+#define _tfullpath  _wfullpath
+#define _tmktemp    _wmktemp
+#define _topen      _wopen
+#define _tremove    _wremove
+#define _trename    _wrename
+#define _tsopen     _wsopen
+#define _tsetlocale _wsetlocale
+#define _tunlink    _wunlink
+#define _tfinddata_t    _wfinddata_t
+#define _tfindfirsti64  _wfindfirsti64
+#define _tfindnexti64   _wfindnexti64
+#define _tfinddatai64_t _wfinddatai64_t
+#endif  /* __MSVCRT__ */
+
+/* dirent structures and functions */
+#define _tdirent	_wdirent
+#define _TDIR 		_WDIR
+#define _topendir	_wopendir
+#define _tclosedir	_wclosedir
+#define _treaddir	_wreaddir
+#define _trewinddir	_wrewinddir
+#define _ttelldir	_wtelldir
+#define _tseekdir	_wseekdir
+#else	/* Not _UNICODE */
+
+/*
+ * TCHAR, the type you should use instead of char.
+ */
+#ifndef _TCHAR_DEFINED
+#ifndef RC_INVOKED
+typedef char	TCHAR;
+typedef char	_TCHAR;
+#endif
+#define _TCHAR_DEFINED
+#endif
+
+/*
+ * __TEXT is a private macro whose specific use is to force the expansio=
n of a
+ * macro passed as an argument to the macros _T or _TEXT.  DO NOT use th=
is
+ * macro within your programs.  It's name and function could change with=
out
+ * notice.
+ */
+#define	__TEXT(q)	q
+
+/*  for porting from other Windows compilers */
+#define _tmain      main
+#define _tWinMain   WinMain
+#define _tenviron  _environ
+#define __targv     __argv
+
+/*
+ * Non-unicode (standard) functions
+ */
+#define _tstat		_stat
+#define	_tprintf	printf
+#define _ftprintf	fprintf
+#define	_stprintf	sprintf
+#define	_sntprintf	_snprintf
+#define	_vtprintf	vprintf
+#define	_vftprintf	vfprintf
+#define _vstprintf	vsprintf
+#define	_vsntprintf	_vsnprintf
+#define	_tscanf		scanf
+#define	_ftscanf	fscanf
+#define	_stscanf	sscanf
+#define	_fgettc		fgetc
+#define	_fgettchar	_fgetchar
+#define	_fgetts		fgets
+#define	_fputtc		fputc
+#define	_fputtchar	_fputchar
+#define	_fputts		fputs
+#define _tfdopen	_fdopen
+#define	_tfopen		fopen
+#define	_tgetenv	getenv
+#define	_tputenv	_putenv
+#define	_tsearchenv	_searchenv
+#define	_tmakepath	_makepath
+#define	_tsplitpath	_splitpath
+#define	_tfullpath	_fullpath
+#define	_gettc		getc
+#define	_getts		gets
+#define	_puttc		putc
+#define	_putts		puts
+#define	_ungettc	ungetc
+#define	_tcstod		strtod
+#define	_tcstol		strtol
+#define _tcstoul	strtoul
+#define	_itot		_itoa
+#define	_ltot		_ltoa
+#define	_ultot		_ultoa
+#define	_ttoi		atoi
+#define	_ttol		atol
+#define	_tcscat		strcat
+#define	_tcscat_s	strcat_s
+#define _tcschr		strchr
+#define _tcscmp		strcmp
+#define _tcscpy		strcpy
+#define _tcscpy_s	strcpy_s
+#define _tcscspn	strcspn
+#define	_tcslen		strlen
+#define	_tcsncat	strncat
+#define	_tcsncmp	strncmp
+#define	_tcsncpy	strncpy
+#define	_tcspbrk	strpbrk
+#define	_tcsrchr	strrchr
+#define _tcsspn		strspn
+#define	_tcsstr		strstr
+#define _tcstok		strtok
+#define	_tcsdup		_strdup
+#define	_tcsicmp	_stricmp
+#define	_tcsnicmp	_strnicmp
+#define	_tcsnset	_strnset
+#define	_tcsrev		_strrev
+#define _tcsset		_strset
+#define	_tcslwr		_strlwr
+#define	_tcsupr		_strupr
+#define	_tcsxfrm	strxfrm
+#define	_tcscoll	strcoll
+#define	_tcsicoll	_stricoll
+#define	_istalpha	isalpha
+#define	_istupper	isupper
+#define	_istlower	islower
+#define	_istdigit	isdigit
+#define	_istxdigit	isxdigit
+#define	_istspace	isspace
+#define	_istpunct	ispunct
+#define	_istalnum	isalnum
+#define	_istprint	isprint
+#define	_istgraph	isgraph
+#define	_istcntrl	iscntrl
+#define	_istascii	isascii
+#define _totupper	toupper
+#define	_totlower	tolower
+#define	_tasctime	asctime
+#define	_tctime		ctime
+#define	_tstrdate	_strdate
+#define	_tstrtime	_strtime
+#define	_tutime		_utime
+#define _tcsftime	strftime
+/* Macro functions */=20
+#define _tcsdec     _strdec
+#define _tcsinc     _strinc
+#define _tcsnbcnt   _strncnt
+#define _tcsnccnt   _strncnt
+#define _tcsnextc   _strnextc
+#define _tcsninc    _strninc
+#define _tcsspnp    _strspnp
+#define _strdec(_str1, _str2) ((_str1)>=3D(_str2) ? NULL : (_str2)-1)
+#define _strinc(_str)  ((_str)+1)
+#define _strnextc(_str) ((unsigned int) *(_str))
+#define _strninc(_str, _inc) (((_str)+(_inc)))
+#define _strncnt(_str, _cnt) ((strlen(_str)>_cnt) ? _count : strlen(_str=
))
+#define _strspnp(_str1, _str2) ((*((_str1)+strspn(_str1,_str2))) ? ((_st=
r1)+strspn(_str1,_str2)) : NULL)
+
+#define _tchmod     _chmod
+#define _tcreat     _creat
+#define _tfindfirst _findfirst
+#define _tfindnext  _findnext
+#define _tmktemp    _mktemp
+#define _topen      _open
+#define _taccess    _access
+#define _tremove    remove
+#define _trename    rename
+#define _tsopen     _sopen
+#define _tsetlocale setlocale
+#define _tunlink    _unlink
+#define _tfinddata_t    _finddata_t
+
+#if 1  /* defined __MSVCRT__ */
+/* Not in crtdll.dll. Define macros anyway? */
+#define _ttoi64     _atoi64
+#define _i64tot     _i64toa
+#define _ui64tot    _ui64toa
+#define _tcsnccoll  _strncoll
+#define _tcsncoll   _strncoll
+#define _tcsncicoll _strnicoll
+#define _tcsnicoll  _strnicoll
+#define _tfindfirsti64  _findfirsti64
+#define _tfindnexti64   _findnexti64
+#define _tfinddatai64_t _finddatai64_t
+#endif  /* __MSVCRT__ */
+
+/* dirent structures and functions */
+#define _tdirent	dirent
+#define _TDIR 		DIR
+#define _topendir	opendir
+#define _tclosedir	closedir
+#define _treaddir	readdir
+#define _trewinddir	rewinddir
+#define _ttelldir	telldir
+#define _tseekdir	seekdir
+
+#endif	/* Not _UNICODE */
+
+/*
+ * UNICODE a constant string when _UNICODE is defined else returns the s=
tring
+ * unmodified.  Also defined in w32api/winnt.h.
+ */
+#define _TEXT(x)	__TEXT(x)
+#define	_T(x)		__TEXT(x)
+
+#endif	/* Not _TCHAR_H_ */
+


Property changes on: trunk/DvdMenuXtractor/libdvdread/win32/gtchar.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/libdvdread/win32/inttypes.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/libdvdread/win32/inttypes.h	2007-02-17 10:34:40=
 UTC (rev 1276)
+++ trunk/DvdMenuXtractor/libdvdread/win32/inttypes.h	2007-02-17 10:55:54=
 UTC (rev 1277)
@@ -1,303 +1,303 @@
-// ISO C9x  compliant inttypes.h for Miscrosoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124=20
-//=20
-//  Copyright (c) 2006 Alexander Chemeris
-//=20
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions ar=
e met:
-//=20
-//   1. Redistributions of source code must retain the above copyright n=
otice,
-//      this list of conditions and the following disclaimer.
-//=20
-//   2. Redistributions in binary form must reproduce the above copyrigh=
t
-//      notice, this list of conditions and the following disclaimer in =
the
-//      documentation and/or other materials provided with the distribut=
ion.
-//=20
-//   3. The name of the author may be used to endorse or promote product=
s
-//      derived from this software without specific prior written permis=
sion.
-//=20
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL=
,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMI=
TED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PR=
OFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILI=
TY,=20
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE =
OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN I=
F
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//=20
-////////////////////////////////////////////////////////////////////////=
///////
-
-#ifndef _MSC_VER // [
-#error "Use this header only with Microsoft Visual C++ compilers!"
-#endif // _MSC_VER ]
-
-#ifndef _MSC_INTTYPES_H_ // [
-#define _MSC_INTTYPES_H_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif
-
-#include "stdint.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// 7.8 Format conversion of integer types
-
-typedef struct {
-   intmax_t quot;
-   intmax_t rem;
-} imaxdiv_t;
-
-// 7.8.1 Macros for format specifiers
-
-// The fprintf macros for signed integers are:
-#define PRId8       "d"
-#define PRIi8       "i"
-#define PRIdLEAST8  "d"
-#define PRIiLEAST8  "i"
-#define PRIdFAST8   "d"
-#define PRIiFAST8   "i"
-
-#define PRId16       "hd"
-#define PRIi16       "hi"
-#define PRIdLEAST16  "hd"
-#define PRIiLEAST16  "hi"
-#define PRIdFAST16   "hd"
-#define PRIiFAST16   "hi"
-
-#define PRId32       "I32d"
-#define PRIi32       "I32i"
-#define PRIdLEAST32  "I32d"
-#define PRIiLEAST32  "I32i"
-#define PRIdFAST32   "I32d"
-#define PRIiFAST32   "I32i"
-
-#define PRId64       "I64d"
-#define PRIi64       "I64i"
-#define PRIdLEAST64  "I64d"
-#define PRIiLEAST64  "I64i"
-#define PRIdFAST64   "I64d"
-#define PRIiFAST64   "I64i"
-
-#define PRIdMAX     "I64d"
-#define PRIiMAX     "I64i"
-
-#define PRIdPTR     "Id"
-#define PRIiPTR     "Ii"
-
-// The fprintf macros for unsigned integers are:
-#define PRIo8       "o"
-#define PRIu8       "u"
-#define PRIx8       "x"
-#define PRIX8       "X"
-#define PRIoLEAST8  "o"
-#define PRIuLEAST8  "u"
-#define PRIxLEAST8  "x"
-#define PRIXLEAST8  "X"
-#define PRIoFAST8   "o"
-#define PRIuFAST8   "u"
-#define PRIxFAST8   "x"
-#define PRIXFAST8   "X"
-
-#define PRIo16       "ho"
-#define PRIu16       "hu"
-#define PRIx16       "hx"
-#define PRIX16       "hX"
-#define PRIoLEAST16  "ho"
-#define PRIuLEAST16  "hu"
-#define PRIxLEAST16  "hx"
-#define PRIXLEAST16  "hX"
-#define PRIoFAST16   "ho"
-#define PRIuFAST16   "hu"
-#define PRIxFAST16   "hx"
-#define PRIXFAST16   "hX"
-
-#define PRIo32       "I32o"
-#define PRIu32       "I32u"
-#define PRIx32       "I32x"
-#define PRIX32       "I32X"
-#define PRIoLEAST32  "I32o"
-#define PRIuLEAST32  "I32u"
-#define PRIxLEAST32  "I32x"
-#define PRIXLEAST32  "I32X"
-#define PRIoFAST32   "I32o"
-#define PRIuFAST32   "I32u"
-#define PRIxFAST32   "I32x"
-#define PRIXFAST32   "I32X"
-
-#define PRIo64       "I64o"
-#define PRIu64       "I64u"
-#define PRIx64       "I64x"
-#define PRIX64       "I64X"
-#define PRIoLEAST64  "I64o"
-#define PRIuLEAST64  "I64u"
-#define PRIxLEAST64  "I64x"
-#define PRIXLEAST64  "I64X"
-#define PRIoFAST64   "I64o"
-#define PRIuFAST64   "I64u"
-#define PRIxFAST64   "I64x"
-#define PRIXFAST64   "I64X"
-
-#define PRIoMAX     "I64o"
-#define PRIuMAX     "I64u"
-#define PRIxMAX     "I64x"
-#define PRIXMAX     "I64X"
-
-#define PRIoPTR     "Io"
-#define PRIuPTR     "Iu"
-#define PRIxPTR     "Ix"
-#define PRIXPTR     "IX"
-
-// The fscanf macros for signed integers are:
-#define SCNd8       "d"
-#define SCNi8       "i"
-#define SCNdLEAST8  "d"
-#define SCNiLEAST8  "i"
-#define SCNdFAST8   "d"
-#define SCNiFAST8   "i"
-
-#define SCNd16       "hd"
-#define SCNi16       "hi"
-#define SCNdLEAST16  "hd"
-#define SCNiLEAST16  "hi"
-#define SCNdFAST16   "hd"
-#define SCNiFAST16   "hi"
-
-#define SCNd32       "ld"
-#define SCNi32       "li"
-#define SCNdLEAST32  "ld"
-#define SCNiLEAST32  "li"
-#define SCNdFAST32   "ld"
-#define SCNiFAST32   "li"
-
-#define SCNd64       "I64d"
-#define SCNi64       "I64i"
-#define SCNdLEAST64  "I64d"
-#define SCNiLEAST64  "I64i"
-#define SCNdFAST64   "I64d"
-#define SCNiFAST64   "I64i"
-
-#define SCNdMAX     "I64d"
-#define SCNiMAX     "I64i"
-
-#ifdef _WIN64 // [
-#  define SCNdPTR     "I64d"
-#  define SCNiPTR     "I64i"
-#else  // _WIN64 ][
-#  define SCNdPTR     "ld"
-#  define SCNiPTR     "li"
-#endif  // _WIN64 ]
-
-// The fscanf macros for unsigned integers are:
-#define SCNo8       "o"
-#define SCNu8       "u"
-#define SCNx8       "x"
-#define SCNX8       "X"
-#define SCNoLEAST8  "o"
-#define SCNuLEAST8  "u"
-#define SCNxLEAST8  "x"
-#define SCNXLEAST8  "X"
-#define SCNoFAST8   "o"
-#define SCNuFAST8   "u"
-#define SCNxFAST8   "x"
-#define SCNXFAST8   "X"
-
-#define SCNo16       "ho"
-#define SCNu16       "hu"
-#define SCNx16       "hx"
-#define SCNX16       "hX"
-#define SCNoLEAST16  "ho"
-#define SCNuLEAST16  "hu"
-#define SCNxLEAST16  "hx"
-#define SCNXLEAST16  "hX"
-#define SCNoFAST16   "ho"
-#define SCNuFAST16   "hu"
-#define SCNxFAST16   "hx"
-#define SCNXFAST16   "hX"
-
-#define SCNo32       "lo"
-#define SCNu32       "lu"
-#define SCNx32       "lx"
-#define SCNX32       "lX"
-#define SCNoLEAST32  "lo"
-#define SCNuLEAST32  "lu"
-#define SCNxLEAST32  "lx"
-#define SCNXLEAST32  "lX"
-#define SCNoFAST32   "lo"
-#define SCNuFAST32   "lu"
-#define SCNxFAST32   "lx"
-#define SCNXFAST32   "lX"
-
-#define SCNo64       "I64o"
-#define SCNu64       "I64u"
-#define SCNx64       "I64x"
-#define SCNX64       "I64X"
-#define SCNoLEAST64  "I64o"
-#define SCNuLEAST64  "I64u"
-#define SCNxLEAST64  "I64x"
-#define SCNXLEAST64  "I64X"
-#define SCNoFAST64   "I64o"
-#define SCNuFAST64   "I64u"
-#define SCNxFAST64   "I64x"
-#define SCNXFAST64   "I64X"
-
-#define SCNoMAX     "I64o"
-#define SCNuMAX     "I64u"
-#define SCNxMAX     "I64x"
-#define SCNXMAX     "I64X"
-
-#ifdef _WIN64 // [
-#  define SCNoPTR     "I64o"
-#  define SCNuPTR     "I64u"
-#  define SCNxPTR     "I64x"
-#  define SCNXPTR     "I64X"
-#else  // _WIN64 ][
-#  define SCNoPTR     "lo"
-#  define SCNuPTR     "lu"
-#  define SCNxPTR     "lx"
-#  define SCNXPTR     "lX"
-#endif  // _WIN64 ]
-
-// 7.8.2 Functions for greatest-width integer types
-
-// 7.8.2.1 The imaxabs function
-#define imaxabs _abs64
-
-// 7.8.2.2 The imaxdiv function
-
-// This is modified version of div() function from Microsoft's div.c fou=
nd
-// in %MSVC.NET%\crt\src\div.c
-static _inline imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
-{
-   imaxdiv_t result;
-
-   result.quot =3D numer / denom;
-   result.rem =3D numer % denom;
-
-   if (numer < 0 && result.rem > 0) {
-      // did division wrong; must fix up
-      ++result.quot;
-      result.rem -=3D denom;
-   }
-
-   return result;
-}
-
-// 7.8.2.3 The strtoimax and strtoumax functions
-#define strtoimax _strtoi64
-#define strtoumax _strtoui64
-
-// 7.8.2.4 The wcstoimax and wcstoumax functions
-#define wcstoimax _wcstoi64
-#define wcstoumax _wcstoui64
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _MSC_INTTYPES_H_ ]
+// ISO C9x  compliant inttypes.h for Miscrosoft Visual Studio
+// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124=20
+//=20
+//  Copyright (c) 2006 Alexander Chemeris
+//=20
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions ar=
e met:
+//=20
+//   1. Redistributions of source code must retain the above copyright n=
otice,
+//      this list of conditions and the following disclaimer.
+//=20
+//   2. Redistributions in binary form must reproduce the above copyrigh=
t
+//      notice, this list of conditions and the following disclaimer in =
the
+//      documentation and/or other materials provided with the distribut=
ion.
+//=20
+//   3. The name of the author may be used to endorse or promote product=
s
+//      derived from this software without specific prior written permis=
sion.
+//=20
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL=
,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMI=
TED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PR=
OFITS;
+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILI=
TY,=20
+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE =
OR
+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN I=
F
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//=20
+////////////////////////////////////////////////////////////////////////=
///////
+
+#ifndef _MSC_VER // [
+#error "Use this header only with Microsoft Visual C++ compilers!"
+#endif // _MSC_VER ]
+
+#ifndef _MSC_INTTYPES_H_ // [
+#define _MSC_INTTYPES_H_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#include "stdint.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// 7.8 Format conversion of integer types
+
+typedef struct {
+   intmax_t quot;
+   intmax_t rem;
+} imaxdiv_t;
+
+// 7.8.1 Macros for format specifiers
+
+// The fprintf macros for signed integers are:
+#define PRId8       "d"
+#define PRIi8       "i"
+#define PRIdLEAST8  "d"
+#define PRIiLEAST8  "i"
+#define PRIdFAST8   "d"
+#define PRIiFAST8   "i"
+
+#define PRId16       "hd"
+#define PRIi16       "hi"
+#define PRIdLEAST16  "hd"
+#define PRIiLEAST16  "hi"
+#define PRIdFAST16   "hd"
+#define PRIiFAST16   "hi"
+
+#define PRId32       "I32d"
+#define PRIi32       "I32i"
+#define PRIdLEAST32  "I32d"
+#define PRIiLEAST32  "I32i"
+#define PRIdFAST32   "I32d"
+#define PRIiFAST32   "I32i"
+
+#define PRId64       "I64d"
+#define PRIi64       "I64i"
+#define PRIdLEAST64  "I64d"
+#define PRIiLEAST64  "I64i"
+#define PRIdFAST64   "I64d"
+#define PRIiFAST64   "I64i"
+
+#define PRIdMAX     "I64d"
+#define PRIiMAX     "I64i"
+
+#define PRIdPTR     "Id"
+#define PRIiPTR     "Ii"
+
+// The fprintf macros for unsigned integers are:
+#define PRIo8       "o"
+#define PRIu8       "u"
+#define PRIx8       "x"
+#define PRIX8       "X"
+#define PRIoLEAST8  "o"
+#define PRIuLEAST8  "u"
+#define PRIxLEAST8  "x"
+#define PRIXLEAST8  "X"
+#define PRIoFAST8   "o"
+#define PRIuFAST8   "u"
+#define PRIxFAST8   "x"
+#define PRIXFAST8   "X"
+
+#define PRIo16       "ho"
+#define PRIu16       "hu"
+#define PRIx16       "hx"
+#define PRIX16       "hX"
+#define PRIoLEAST16  "ho"
+#define PRIuLEAST16  "hu"
+#define PRIxLEAST16  "hx"
+#define PRIXLEAST16  "hX"
+#define PRIoFAST16   "ho"
+#define PRIuFAST16   "hu"
+#define PRIxFAST16   "hx"
+#define PRIXFAST16   "hX"
+
+#define PRIo32       "I32o"
+#define PRIu32       "I32u"
+#define PRIx32       "I32x"
+#define PRIX32       "I32X"
+#define PRIoLEAST32  "I32o"
+#define PRIuLEAST32  "I32u"
+#define PRIxLEAST32  "I32x"
+#define PRIXLEAST32  "I32X"
+#define PRIoFAST32   "I32o"
+#define PRIuFAST32   "I32u"
+#define PRIxFAST32   "I32x"
+#define PRIXFAST32   "I32X"
+
+#define PRIo64       "I64o"
+#define PRIu64       "I64u"
+#define PRIx64       "I64x"
+#define PRIX64       "I64X"
+#define PRIoLEAST64  "I64o"
+#define PRIuLEAST64  "I64u"
+#define PRIxLEAST64  "I64x"
+#define PRIXLEAST64  "I64X"
+#define PRIoFAST64   "I64o"
+#define PRIuFAST64   "I64u"
+#define PRIxFAST64   "I64x"
+#define PRIXFAST64   "I64X"
+
+#define PRIoMAX     "I64o"
+#define PRIuMAX     "I64u"
+#define PRIxMAX     "I64x"
+#define PRIXMAX     "I64X"
+
+#define PRIoPTR     "Io"
+#define PRIuPTR     "Iu"
+#define PRIxPTR     "Ix"
+#define PRIXPTR     "IX"
+
+// The fscanf macros for signed integers are:
+#define SCNd8       "d"
+#define SCNi8       "i"
+#define SCNdLEAST8  "d"
+#define SCNiLEAST8  "i"
+#define SCNdFAST8   "d"
+#define SCNiFAST8   "i"
+
+#define SCNd16       "hd"
+#define SCNi16       "hi"
+#define SCNdLEAST16  "hd"
+#define SCNiLEAST16  "hi"
+#define SCNdFAST16   "hd"
+#define SCNiFAST16   "hi"
+
+#define SCNd32       "ld"
+#define SCNi32       "li"
+#define SCNdLEAST32  "ld"
+#define SCNiLEAST32  "li"
+#define SCNdFAST32   "ld"
+#define SCNiFAST32   "li"
+
+#define SCNd64       "I64d"
+#define SCNi64       "I64i"
+#define SCNdLEAST64  "I64d"
+#define SCNiLEAST64  "I64i"
+#define SCNdFAST64   "I64d"
+#define SCNiFAST64   "I64i"
+
+#define SCNdMAX     "I64d"
+#define SCNiMAX     "I64i"
+
+#ifdef _WIN64 // [
+#  define SCNdPTR     "I64d"
+#  define SCNiPTR     "I64i"
+#else  // _WIN64 ][
+#  define SCNdPTR     "ld"
+#  define SCNiPTR     "li"
+#endif  // _WIN64 ]
+
+// The fscanf macros for unsigned integers are:
+#define SCNo8       "o"
+#define SCNu8       "u"
+#define SCNx8       "x"
+#define SCNX8       "X"
+#define SCNoLEAST8  "o"
+#define SCNuLEAST8  "u"
+#define SCNxLEAST8  "x"
+#define SCNXLEAST8  "X"
+#define SCNoFAST8   "o"
+#define SCNuFAST8   "u"
+#define SCNxFAST8   "x"
+#define SCNXFAST8   "X"
+
+#define SCNo16       "ho"
+#define SCNu16       "hu"
+#define SCNx16       "hx"
+#define SCNX16       "hX"
+#define SCNoLEAST16  "ho"
+#define SCNuLEAST16  "hu"
+#define SCNxLEAST16  "hx"
+#define SCNXLEAST16  "hX"
+#define SCNoFAST16   "ho"
+#define SCNuFAST16   "hu"
+#define SCNxFAST16   "hx"
+#define SCNXFAST16   "hX"
+
+#define SCNo32       "lo"
+#define SCNu32       "lu"
+#define SCNx32       "lx"
+#define SCNX32       "lX"
+#define SCNoLEAST32  "lo"
+#define SCNuLEAST32  "lu"
+#define SCNxLEAST32  "lx"
+#define SCNXLEAST32  "lX"
+#define SCNoFAST32   "lo"
+#define SCNuFAST32   "lu"
+#define SCNxFAST32   "lx"
+#define SCNXFAST32   "lX"
+
+#define SCNo64       "I64o"
+#define SCNu64       "I64u"
+#define SCNx64       "I64x"
+#define SCNX64       "I64X"
+#define SCNoLEAST64  "I64o"
+#define SCNuLEAST64  "I64u"
+#define SCNxLEAST64  "I64x"
+#define SCNXLEAST64  "I64X"
+#define SCNoFAST64   "I64o"
+#define SCNuFAST64   "I64u"
+#define SCNxFAST64   "I64x"
+#define SCNXFAST64   "I64X"
+
+#define SCNoMAX     "I64o"
+#define SCNuMAX     "I64u"
+#define SCNxMAX     "I64x"
+#define SCNXMAX     "I64X"
+
+#ifdef _WIN64 // [
+#  define SCNoPTR     "I64o"
+#  define SCNuPTR     "I64u"
+#  define SCNxPTR     "I64x"
+#  define SCNXPTR     "I64X"
+#else  // _WIN64 ][
+#  define SCNoPTR     "lo"
+#  define SCNuPTR     "lu"
+#  define SCNxPTR     "lx"
+#  define SCNXPTR     "lX"
+#endif  // _WIN64 ]
+
+// 7.8.2 Functions for greatest-width integer types
+
+// 7.8.2.1 The imaxabs function
+#define imaxabs _abs64
+
+// 7.8.2.2 The imaxdiv function
+
+// This is modified version of div() function from Microsoft's div.c fou=
nd
+// in %MSVC.NET%\crt\src\div.c
+static _inline imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
+{
+   imaxdiv_t result;
+
+   result.quot =3D numer / denom;
+   result.rem =3D numer % denom;
+
+   if (numer < 0 && result.rem > 0) {
+      // did division wrong; must fix up
+      ++result.quot;
+      result.rem -=3D denom;
+   }
+
+   return result;
+}
+
+// 7.8.2.3 The strtoimax and strtoumax functions
+#define strtoimax _strtoi64
+#define strtoumax _strtoui64
+
+// 7.8.2.4 The wcstoimax and wcstoumax functions
+#define wcstoimax _wcstoi64
+#define wcstoumax _wcstoui64
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _MSC_INTTYPES_H_ ]


Property changes on: trunk/DvdMenuXtractor/libdvdread/win32/inttypes.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/libdvdread/win32/posix.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/libdvdread/win32/posix.h	2007-02-17 10:34:40 UT=
C (rev 1276)
+++ trunk/DvdMenuXtractor/libdvdread/win32/posix.h	2007-02-17 10:55:54 UT=
C (rev 1277)
@@ -1,37 +1,37 @@
-#ifndef _MSC_VER
-#error "Use this header only with Microsoft Visual C++ compilers!"
-#endif
-
-#ifndef _MSC_POSIX_H_
-#define _MSC_POSIX_H_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif
-
-#include <sys/stat.h>
-#ifndef S_ISREG
-#define S_ISREG(mode) (0)
-#endif
-#ifndef S_ISDIR
-#define S_ISDIR(mode) ((mode)&_S_IFDIR)
-#endif
-#ifndef S_ISCHR
-#define S_ISCHR(mode) (0)
-#endif
-#ifndef S_ISSOCK
-#define S_ISSOCK(x) (0)
-#endif
-#ifndef S_ISBLK
-#define S_ISBLK(x) (0)
-#endif
-
-#include <stdlib.h>
-
-#define PATH_MAX _MAX_PATH
-
-#include <windows.h>
-#define dlclose(x)      FreeLibrary(x)
-#define dlsym(x,y)      GetProcAddress(x,y)
-
-#endif // _MSC_POSIX_H_
+#ifndef _MSC_VER
+#error "Use this header only with Microsoft Visual C++ compilers!"
+#endif
+
+#ifndef _MSC_POSIX_H_
+#define _MSC_POSIX_H_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#include <sys/stat.h>
+#ifndef S_ISREG
+#define S_ISREG(mode) (0)
+#endif
+#ifndef S_ISDIR
+#define S_ISDIR(mode) ((mode)&_S_IFDIR)
+#endif
+#ifndef S_ISCHR
+#define S_ISCHR(mode) (0)
+#endif
+#ifndef S_ISSOCK
+#define S_ISSOCK(x) (0)
+#endif
+#ifndef S_ISBLK
+#define S_ISBLK(x) (0)
+#endif
+
+#include <stdlib.h>
+
+#define PATH_MAX _MAX_PATH
+
+#include <windows.h>
+#define dlclose(x)      FreeLibrary(x)
+#define dlsym(x,y)      GetProcAddress(x,y)
+
+#endif // _MSC_POSIX_H_


Property changes on: trunk/DvdMenuXtractor/libdvdread/win32/posix.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/libdvdread/win32/stdint.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/libdvdread/win32/stdint.h	2007-02-17 10:34:40 U=
TC (rev 1276)
+++ trunk/DvdMenuXtractor/libdvdread/win32/stdint.h	2007-02-17 10:55:54 U=
TC (rev 1277)
@@ -1,208 +1,208 @@
-// ISO C9x  compliant stdint.h for Miscrosoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124=20
-//=20
-//  Copyright (c) 2006 Alexander Chemeris
-//=20
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions ar=
e met:
-//=20
-//   1. Redistributions of source code must retain the above copyright n=
otice,
-//      this list of conditions and the following disclaimer.
-//=20
-//   2. Redistributions in binary form must reproduce the above copyrigh=
t
-//      notice, this list of conditions and the following disclaimer in =
the
-//      documentation and/or other materials provided with the distribut=
ion.
-//=20
-//   3. The name of the author may be used to endorse or promote product=
s
-//      derived from this software without specific prior written permis=
sion.
-//=20
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL=
,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMI=
TED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PR=
OFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILI=
TY,=20
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE =
OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN I=
F
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//=20
-////////////////////////////////////////////////////////////////////////=
///////
-
-#ifndef _MSC_VER // [
-#error "Use this header only with Microsoft Visual C++ compilers!"
-#endif // _MSC_VER ]
-
-#ifndef _MSC_STDINT_H_ // [
-#define _MSC_STDINT_H_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif
-
-#include <BaseTsd.h>
-#include <limits.h>
-#include <wchar.h>
-
-// 7.18.1 Integer types
-
-// 7.18.1.1 Exact-width integer types
-typedef signed __int8     int8_t;
-typedef signed __int16    int16_t;
-typedef signed __int32    int32_t;
-typedef signed __int64    int64_t;
-typedef unsigned __int8   uint8_t;
-typedef unsigned __int16  uint16_t;
-typedef unsigned __int32  uint32_t;
-typedef unsigned __int64  uint64_t;
-
-// 7.18.1.2 Minimum-width integer types
-typedef int8_t    int_least8_t;
-typedef int16_t   int_least16_t;
-typedef int32_t   int_least32_t;
-typedef int64_t   int_least64_t;
-typedef uint8_t   uint_least8_t;
-typedef uint16_t  uint_least16_t;
-typedef uint32_t  uint_least32_t;
-typedef uint64_t  uint_least64_t;
-
-// 7.18.1.3 Fastest minimum-width integer types
-typedef int8_t    int_fast8_t;
-typedef int16_t   int_fast16_t;
-typedef int32_t   int_fast32_t;
-typedef int64_t   int_fast64_t;
-typedef uint8_t   uint_fast8_t;
-typedef uint16_t  uint_fast16_t;
-typedef uint32_t  uint_fast32_t;
-typedef uint64_t  uint_fast64_t;
-
-// 7.18.1.4 Integer types capable of holding object pointers
-typedef INT_PTR   intptr_t;
-typedef UINT_PTR  uintptr_t;
-
-// 7.18.1.5 Greatest-width integer types
-typedef int64_t   intmax_t;
-typedef uint64_t  uintmax_t;
-
-
-// 7.18.2 Limits of specified-width integer types
-
-#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [   See foo=
tnote 220 at page 257 and footnote 221 at page 259
-
-// 7.18.2.1 Limits of exact-width integer types
-#define INT8_MIN     _I8_MIN
-#define INT8_MAX     _I8_MAX
-#define INT16_MIN    _I16_MIN
-#define INT16_MAX    _I16_MAX
-#define INT32_MIN    _I32_MIN
-#define INT32_MAX    _I32_MAX
-#define INT64_MIN    _I64_MIN
-#define INT64_MAX    _I64_MAX
-#define UINT8_MAX    _UI8_MAX
-#define UINT16_MAX   _UI16_MAX
-#define UINT32_MAX   _UI32_MAX
-#define UINT64_MAX   _UI64_MAX
-
-// 7.18.2.2 Limits of minimum-width integer types
-#define INT_LEAST8_MIN    INT8_MIN
-#define INT_LEAST8_MAX    INT8_MAX
-#define INT_LEAST16_MIN   INT16_MIN
-#define INT_LEAST16_MAX   INT16_MAX
-#define INT_LEAST32_MIN   INT32_MIN
-#define INT_LEAST32_MAX   INT32_MAX
-#define INT_LEAST64_MIN   INT64_MIN
-#define INT_LEAST64_MAX   INT64_MAX
-#define UINT_LEAST8_MAX   UINT8_MAX
-#define UINT_LEAST16_MAX  UINT16_MAX
-#define UINT_LEAST32_MAX  UINT32_MAX
-#define UINT_LEAST64_MAX  UINT64_MAX
-
-// 7.18.2.3 Limits of fastest minimum-width integer types
-#define INT_FAST8_MIN    INT8_MIN
-#define INT_FAST8_MAX    INT8_MAX
-#define INT_FAST16_MIN   INT16_MIN
-#define INT_FAST16_MAX   INT16_MAX
-#define INT_FAST32_MIN   INT32_MIN
-#define INT_FAST32_MAX   INT32_MAX
-#define INT_FAST64_MIN   INT64_MIN
-#define INT_FAST64_MAX   INT64_MAX
-#define UINT_FAST8_MAX   UINT8_MAX
-#define UINT_FAST16_MAX  UINT16_MAX
-#define UINT_FAST32_MAX  UINT32_MAX
-#define UINT_FAST64_MAX  UINT64_MAX
-
-// 7.18.2.4 Limits of integer types capable of holding object pointers
-#ifdef _WIN64 // [
-#  define INTPTR_MIN   INT64_MIN
-#  define INTPTR_MAX   INT64_MAX
-#  define UINTPTR_MAX  UINT64_MAX
-#else // _WIN64 ][
-#  define INTPTR_MIN   INT32_MIN
-#  define INTPTR_MAX   INT32_MAX
-#  define UINTPTR_MAX  UINT32_MAX
-#endif // _WIN64 ]
-
-// 7.18.2.5 Limits of greatest-width integer types
-#define INTMAX_MIN   INT64_MIN
-#define INTMAX_MAX   INT64_MAX
-#define UINTMAX_MAX  UINT64_MAX
-
-// 7.18.3 Limits of other integer types
-
-#ifdef _WIN64 // [
-#  define PTRDIFF_MIN  _I64_MIN
-#  define PTRDIFF_MAX  _I64_MAX
-#else  // _WIN64 ][
-#  define PTRDIFF_MIN  _I32_MIN
-#  define PTRDIFF_MAX  _I32_MAX
-#endif  // _WIN64 ]
-
-#define SIG_ATOMIC_MIN  INT_MIN
-#define SIG_ATOMIC_MAX  INT_MAX
-
-#ifndef SIZE_MAX // [
-#  ifdef _WIN64 // [
-#     define SIZE_MAX  _UI64_MAX
-#  else // _WIN64 ][
-#     define SIZE_MAX  _UI32_MAX
-#  endif // _WIN64 ]
-#endif // SIZE_MAX ]
-
-// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
-#ifndef WCHAR_MIN // [
-#  define WCHAR_MIN  0
-#endif  // WCHAR_MIN ]
-#ifndef WCHAR_MAX // [
-#  define WCHAR_MAX  _UI16_MAX
-#endif  // WCHAR_MAX ]
-
-#define WINT_MIN  0
-#define WINT_MAX  _UI16_MAX
-
-#endif // __STDC_LIMIT_MACROS ]
-
-
-// 7.18.4 Limits of other integer types
-
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [   See =
footnote 224 at page 260
-
-// 7.18.4.1 Macros for minimum-width integer constants
-
-#define INT8_C(val)  val
-#define INT16_C(val) val
-#define INT32_C(val) val##L
-#define INT64_C(val) val##i64
-
-#define UINT8_C(val)  val
-#define UINT16_C(val) val
-#define UINT32_C(val) val##UL
-#define UINT64_C(val) val##Ui64
-
-// 7.18.4.2 Macros for greatest-width integer constants
-#define INTMAX_C   INT64_C
-#define UINTMAX_C  UINT64_C
-
-#endif // __STDC_CONSTANT_MACROS ]
-
-
-#endif // _MSC_STDINT_H_ ]
+// ISO C9x  compliant stdint.h for Miscrosoft Visual Studio
+// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124=20
+//=20
+//  Copyright (c) 2006 Alexander Chemeris
+//=20
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions ar=
e met:
+//=20
+//   1. Redistributions of source code must retain the above copyright n=
otice,
+//      this list of conditions and the following disclaimer.
+//=20
+//   2. Redistributions in binary form must reproduce the above copyrigh=
t
+//      notice, this list of conditions and the following disclaimer in =
the
+//      documentation and/or other materials provided with the distribut=
ion.
+//=20
+//   3. The name of the author may be used to endorse or promote product=
s
+//      derived from this software without specific prior written permis=
sion.
+//=20
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL=
,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMI=
TED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PR=
OFITS;
+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILI=
TY,=20
+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE =
OR
+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN I=
F
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//=20
+////////////////////////////////////////////////////////////////////////=
///////
+
+#ifndef _MSC_VER // [
+#error "Use this header only with Microsoft Visual C++ compilers!"
+#endif // _MSC_VER ]
+
+#ifndef _MSC_STDINT_H_ // [
+#define _MSC_STDINT_H_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#include <BaseTsd.h>
+#include <limits.h>
+#include <wchar.h>
+
+// 7.18.1 Integer types
+
+// 7.18.1.1 Exact-width integer types
+typedef signed __int8     int8_t;
+typedef signed __int16    int16_t;
+typedef signed __int32    int32_t;
+typedef signed __int64    int64_t;
+typedef unsigned __int8   uint8_t;
+typedef unsigned __int16  uint16_t;
+typedef unsigned __int32  uint32_t;
+typedef unsigned __int64  uint64_t;
+
+// 7.18.1.2 Minimum-width integer types
+typedef int8_t    int_least8_t;
+typedef int16_t   int_least16_t;
+typedef int32_t   int_least32_t;
+typedef int64_t   int_least64_t;
+typedef uint8_t   uint_least8_t;
+typedef uint16_t  uint_least16_t;
+typedef uint32_t  uint_least32_t;
+typedef uint64_t  uint_least64_t;
+
+// 7.18.1.3 Fastest minimum-width integer types
+typedef int8_t    int_fast8_t;
+typedef int16_t   int_fast16_t;
+typedef int32_t   int_fast32_t;
+typedef int64_t   int_fast64_t;
+typedef uint8_t   uint_fast8_t;
+typedef uint16_t  uint_fast16_t;
+typedef uint32_t  uint_fast32_t;
+typedef uint64_t  uint_fast64_t;
+
+// 7.18.1.4 Integer types capable of holding object pointers
+typedef INT_PTR   intptr_t;
+typedef UINT_PTR  uintptr_t;
+
+// 7.18.1.5 Greatest-width integer types
+typedef int64_t   intmax_t;
+typedef uint64_t  uintmax_t;
+
+
+// 7.18.2 Limits of specified-width integer types
+
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [   See foo=
tnote 220 at page 257 and footnote 221 at page 259
+
+// 7.18.2.1 Limits of exact-width integer types
+#define INT8_MIN     _I8_MIN
+#define INT8_MAX     _I8_MAX
+#define INT16_MIN    _I16_MIN
+#define INT16_MAX    _I16_MAX
+#define INT32_MIN    _I32_MIN
+#define INT32_MAX    _I32_MAX
+#define INT64_MIN    _I64_MIN
+#define INT64_MAX    _I64_MAX
+#define UINT8_MAX    _UI8_MAX
+#define UINT16_MAX   _UI16_MAX
+#define UINT32_MAX   _UI32_MAX
+#define UINT64_MAX   _UI64_MAX
+
+// 7.18.2.2 Limits of minimum-width integer types
+#define INT_LEAST8_MIN    INT8_MIN
+#define INT_LEAST8_MAX    INT8_MAX
+#define INT_LEAST16_MIN   INT16_MIN
+#define INT_LEAST16_MAX   INT16_MAX
+#define INT_LEAST32_MIN   INT32_MIN
+#define INT_LEAST32_MAX   INT32_MAX
+#define INT_LEAST64_MIN   INT64_MIN
+#define INT_LEAST64_MAX   INT64_MAX
+#define UINT_LEAST8_MAX   UINT8_MAX
+#define UINT_LEAST16_MAX  UINT16_MAX
+#define UINT_LEAST32_MAX  UINT32_MAX
+#define UINT_LEAST64_MAX  UINT64_MAX
+
+// 7.18.2.3 Limits of fastest minimum-width integer types
+#define INT_FAST8_MIN    INT8_MIN
+#define INT_FAST8_MAX    INT8_MAX
+#define INT_FAST16_MIN   INT16_MIN
+#define INT_FAST16_MAX   INT16_MAX
+#define INT_FAST32_MIN   INT32_MIN
+#define INT_FAST32_MAX   INT32_MAX
+#define INT_FAST64_MIN   INT64_MIN
+#define INT_FAST64_MAX   INT64_MAX
+#define UINT_FAST8_MAX   UINT8_MAX
+#define UINT_FAST16_MAX  UINT16_MAX
+#define UINT_FAST32_MAX  UINT32_MAX
+#define UINT_FAST64_MAX  UINT64_MAX
+
+// 7.18.2.4 Limits of integer types capable of holding object pointers
+#ifdef _WIN64 // [
+#  define INTPTR_MIN   INT64_MIN
+#  define INTPTR_MAX   INT64_MAX
+#  define UINTPTR_MAX  UINT64_MAX
+#else // _WIN64 ][
+#  define INTPTR_MIN   INT32_MIN
+#  define INTPTR_MAX   INT32_MAX
+#  define UINTPTR_MAX  UINT32_MAX
+#endif // _WIN64 ]
+
+// 7.18.2.5 Limits of greatest-width integer types
+#define INTMAX_MIN   INT64_MIN
+#define INTMAX_MAX   INT64_MAX
+#define UINTMAX_MAX  UINT64_MAX
+
+// 7.18.3 Limits of other integer types
+
+#ifdef _WIN64 // [
+#  define PTRDIFF_MIN  _I64_MIN
+#  define PTRDIFF_MAX  _I64_MAX
+#else  // _WIN64 ][
+#  define PTRDIFF_MIN  _I32_MIN
+#  define PTRDIFF_MAX  _I32_MAX
+#endif  // _WIN64 ]
+
+#define SIG_ATOMIC_MIN  INT_MIN
+#define SIG_ATOMIC_MAX  INT_MAX
+
+#ifndef SIZE_MAX // [
+#  ifdef _WIN64 // [
+#     define SIZE_MAX  _UI64_MAX
+#  else // _WIN64 ][
+#     define SIZE_MAX  _UI32_MAX
+#  endif // _WIN64 ]
+#endif // SIZE_MAX ]
+
+// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
+#ifndef WCHAR_MIN // [
+#  define WCHAR_MIN  0
+#endif  // WCHAR_MIN ]
+#ifndef WCHAR_MAX // [
+#  define WCHAR_MAX  _UI16_MAX
+#endif  // WCHAR_MAX ]
+
+#define WINT_MIN  0
+#define WINT_MAX  _UI16_MAX
+
+#endif // __STDC_LIMIT_MACROS ]
+
+
+// 7.18.4 Limits of other integer types
+
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [   See =
footnote 224 at page 260
+
+// 7.18.4.1 Macros for minimum-width integer constants
+
+#define INT8_C(val)  val
+#define INT16_C(val) val
+#define INT32_C(val) val##L
+#define INT64_C(val) val##i64
+
+#define UINT8_C(val)  val
+#define UINT16_C(val) val
+#define UINT32_C(val) val##UL
+#define UINT64_C(val) val##Ui64
+
+// 7.18.4.2 Macros for greatest-width integer constants
+#define INTMAX_C   INT64_C
+#define UINTMAX_C  UINT64_C
+
+#endif // __STDC_CONSTANT_MACROS ]
+
+
+#endif // _MSC_STDINT_H_ ]


Property changes on: trunk/DvdMenuXtractor/libdvdread/win32/stdint.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/libdvdread/win32/win32.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/libdvdread/win32/win32.proj	2007-02-17 10:34:40=
 UTC (rev 1276)
+++ trunk/DvdMenuXtractor/libdvdread/win32/win32.proj	2007-02-17 10:55:54=
 UTC (rev 1277)
@@ -1,17 +1,17 @@
-#include "*/*.proj"
-
-GROUP posixmsvc
-{
-  SOURCE dirent.c
-  DEFINE _CRT_NON_CONFORMING_SWPRINTFS
-
-  HEADER dirent.h
-  HEADER gtchar.h
-  HEADER posix.h
-}
-
-GROUP c99msvc
-{
-  HEADER inttypes.h
-  HEADER stdint.h
-}
+#include "*/*.proj"
+
+GROUP posixmsvc
+{
+  SOURCE dirent.c
+  DEFINE _CRT_NON_CONFORMING_SWPRINTFS
+
+  HEADER dirent.h
+  HEADER gtchar.h
+  HEADER posix.h
+}
+
+GROUP c99msvc
+{
+  HEADER inttypes.h
+  HEADER stdint.h
+}


Property changes on: trunk/DvdMenuXtractor/libdvdread/win32/win32.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/logtextedit.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/logtextedit.h	2007-02-17 10:34:40 UTC (rev 1276=
)
+++ trunk/DvdMenuXtractor/logtextedit.h	2007-02-17 10:55:54 UTC (rev 1277=
)
@@ -1,25 +1,25 @@
-#ifndef LOGTEXTEDIT_H
-#define LOGTEXTEDIT_H
-
-#include <QTextEdit>
-
-// forward declaration
-class OutputReader;
-
-class LogTextEdit : public QTextEdit
-{
-	Q_OBJECT
-
-public:
-  LogTextEdit(QWidget *parent);
-  ~LogTextEdit();
-
-private slots:
-	void standardErrorReady();
-	void standardOutputReady();
-
-private:
-	OutputReader& notifier_;
-};
-
-#endif // LOGTEXTEDIT_H
+#ifndef LOGTEXTEDIT_H
+#define LOGTEXTEDIT_H
+
+#include <QTextEdit>
+
+// forward declaration
+class OutputReader;
+
+class LogTextEdit : public QTextEdit
+{
+	Q_OBJECT
+
+public:
+  LogTextEdit(QWidget *parent);
+  ~LogTextEdit();
+
+private slots:
+	void standardErrorReady();
+	void standardOutputReady();
+
+private:
+	OutputReader& notifier_;
+};
+
+#endif // LOGTEXTEDIT_H


Property changes on: trunk/DvdMenuXtractor/logtextedit.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/mpegparser/CircBuffer.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/mpegparser/M2VParser.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/mpegparser/MPEGVideoBuffer.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/mpegparser/Types.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/mpegparser/mpegparser.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/mpegparser/mpegparser.proj	2007-02-17 10:34:40 =
UTC (rev 1276)
+++ trunk/DvdMenuXtractor/mpegparser/mpegparser.proj	2007-02-17 10:55:54 =
UTC (rev 1277)
@@ -1,11 +1,11 @@
-GROUP mpegparser
-{
-  SOURCE CircBuffer.cpp
-  SOURCE M2VParser.cpp
-  SOURCE MPEGVideoBuffer.cpp
-
-  HEADER CircBuffer.h
-  HEADER M2VParser.h
-  HEADER MPEGVideoBuffer.h
-  HEADER Types.h
-}
+GROUP mpegparser
+{
+  SOURCE CircBuffer.cpp
+  SOURCE M2VParser.cpp
+  SOURCE MPEGVideoBuffer.cpp
+
+  HEADER CircBuffer.h
+  HEADER M2VParser.h
+  HEADER MPEGVideoBuffer.h
+  HEADER Types.h
+}


Property changes on: trunk/DvdMenuXtractor/mpegparser/mpegparser.proj
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/outputreader.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/selectiontreeitem.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/selectiontreeitem.h	2007-02-17 10:34:40 UTC (re=
v 1276)
+++ trunk/DvdMenuXtractor/selectiontreeitem.h	2007-02-17 10:55:54 UTC (re=
v 1277)
@@ -1,25 +1,25 @@
-#ifndef SELECTIONTREEITEM_H
-#define SELECTIONTREEITEM_H
-
-#include <stdint.h>
-
-// forward declaration
-class QTreeWidgetItem;
-
-class SelectionTreeItem : public QTreeWidgetItem
-{
-public:
-
-  SelectionTreeItem(QTreeWidget *parent, int16_t title, bool isMenuItem)=
;
-	SelectionTreeItem(const SelectionTreeItem &other);
-  ~SelectionTreeItem();
-
-	int16_t title()		const;
-	bool isMenuItem() const;
-
-private:
-	int16_t title_;
-	bool isMenuItem_;
-};
-
-#endif // SELECTIONTREEITEM_H
+#ifndef SELECTIONTREEITEM_H
+#define SELECTIONTREEITEM_H
+
+#include <stdint.h>
+
+// forward declaration
+class QTreeWidgetItem;
+
+class SelectionTreeItem : public QTreeWidgetItem
+{
+public:
+
+  SelectionTreeItem(QTreeWidget *parent, int16_t title, bool isMenuItem)=
;
+	SelectionTreeItem(const SelectionTreeItem &other);
+  ~SelectionTreeItem();
+
+	int16_t title()		const;
+	bool isMenuItem() const;
+
+private:
+	int16_t title_;
+	bool isMenuItem_;
+};
+
+#endif // SELECTIONTREEITEM_H


Property changes on: trunk/DvdMenuXtractor/selectiontreeitem.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/selectiontreesubitem.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/selectiontreesubitem.h	2007-02-17 10:34:40 UTC =
(rev 1276)
+++ trunk/DvdMenuXtractor/selectiontreesubitem.h	2007-02-17 10:55:54 UTC =
(rev 1277)
@@ -1,26 +1,26 @@
-#ifndef SELECTION_TREE_SUB_ITEM_H
-#define SELECTION_TREE_SUB_ITEM_H
-
-// forward declaration
-class QTreeWidgetItem;
-class SelectionTreeItem;
-
-class SelectionTreeSubItem : public QTreeWidgetItem
-{
-public:
-	enum SubItemType { AUDIO_TRACK, SUBTITLE_TRACK };
-	SelectionTreeSubItem(QTreeWidgetItem *parent, const SelectionTreeItem& =
titleItem, size_t index, SubItemType type);
-	SelectionTreeSubItem(const SelectionTreeSubItem& other);
-	~SelectionTreeSubItem();
-
-	size_t index() const;
-	SubItemType type() const;
-	const SelectionTreeItem& titleItem() const;
-
-private:
-	size_t index_;
-	SubItemType type_;
-	const SelectionTreeItem &titleItem_;
-};
-
+#ifndef SELECTION_TREE_SUB_ITEM_H
+#define SELECTION_TREE_SUB_ITEM_H
+
+// forward declaration
+class QTreeWidgetItem;
+class SelectionTreeItem;
+
+class SelectionTreeSubItem : public QTreeWidgetItem
+{
+public:
+	enum SubItemType { AUDIO_TRACK, SUBTITLE_TRACK };
+	SelectionTreeSubItem(QTreeWidgetItem *parent, const SelectionTreeItem& =
titleItem, size_t index, SubItemType type);
+	SelectionTreeSubItem(const SelectionTreeSubItem& other);
+	~SelectionTreeSubItem();
+
+	size_t index() const;
+	SubItemType type() const;
+	const SelectionTreeItem& titleItem() const;
+
+private:
+	size_t index_;
+	SubItemType type_;
+	const SelectionTreeItem &titleItem_;
+};
+
 #endif // SELECTION_TREE_SUB_ITEM_H
\ No newline at end of file


Property changes on: trunk/DvdMenuXtractor/selectiontreesubitem.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/utilities.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/utilities.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/DvdMenuXtractor/utilities.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,17 +1,17 @@
-#ifndef UTILITIES_H
-#define UTILITIES_H
-
-#include <QString>
-#include <stdint.h>
-
-namespace Utilities
-{
-	static const QString APPLICATION_NAME    ("DVDMenuXtractor: DMX - a fai=
r-use tool");
-	static const QString APPLICATION_VERSION ("0.9.x");
-
-	QString CreateUID();
-	QString FormatTime(uint64_t a_time);
-	QString EncodeHex(const unsigned char *buffer, unsigned size);
-}
-
+#ifndef UTILITIES_H
+#define UTILITIES_H
+
+#include <QString>
+#include <stdint.h>
+
+namespace Utilities
+{
+	static const QString APPLICATION_NAME    ("DVDMenuXtractor: DMX - a fai=
r-use tool");
+	static const QString APPLICATION_VERSION ("0.9.x");
+
+	QString CreateUID();
+	QString FormatTime(uint64_t a_time);
+	QString EncodeHex(const unsigned char *buffer, unsigned size);
+}
+
 #endif // UTILITIES_H
\ No newline at end of file


Property changes on: trunk/DvdMenuXtractor/utilities.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/vobparser/IFOContent.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/vobparser/IFOContent.h	2007-02-17 10:34:40 UTC =
(rev 1276)
+++ trunk/DvdMenuXtractor/vobparser/IFOContent.h	2007-02-17 10:55:54 UTC =
(rev 1277)
@@ -1,71 +1,71 @@
-// ---------------------------------------------------------------------=
-------
-#ifndef _IFO_CONTENT_H_
-#define _IFO_CONTENT_H_
-// ---------------------------------------------------------------------=
-------
-#include <QHash>
-#include <vector>
-
-#include "VobParser.h"
-#include "dvdread/ifo_read.h"
-// ---------------------------------------------------------------------=
-------
-typedef std::vector<uint8_t> IdArray;
-
-typedef QHash<int, CellListElem *> CellsHashType;
-typedef std::vector<const audio_attr_t*> AudioTrackList;
-typedef std::vector<const subp_attr_t*> SubtitleTrackList;
-
-#define MAKE_CELLS_KEY(vob_id,cell_id)  ((vob_id << 8) | cell_id)
-// ---------------------------------------------------------------------=
-------
-class IFOException { };
-class IFOFileIOException : public IFOException { };
-class IFOInvalidFileFormatException : public IFOException { };
-// ---------------------------------------------------------------------=
-------
-typedef QList<CellListElem*> CellsListBaseType;
-class CellsListType : public CellsListBaseType
-{
-public:
-	void arrange();
-	CellListElem* at(uint16_t vob_id, uint8_t cell_id) const;
-	const CellListElem* at(const cell_position_t & position) const;
-
-	// comperator for qSort()
-	static int cellListElemCompare(const CellListElem *arg1, const CellList=
Elem *arg2);
-};
-// ---------------------------------------------------------------------=
-------
-class IFOContent=20
-{
-public:
-	IFOContent(dvd_reader_t *dvdr, int16_t title);
-
-	~IFOContent()
-	{
-		ifoClose(m_handle);
-		m_CellsList.clear();
-		m_langCellsList.clear();
-	}
-
-	ifo_handle_t& Handle()
-	{
-		assert(m_handle !=3D NULL);
-		return *m_handle;
-	}
-
-	IdArray FindSubStream(uint8_t streamID, bool menu) const;
-	uint8_t FindAudioStream(uint8_t streamID, bool menu) const;
-=09
-	void GetPGCCells(const pgcit_t & pgcit, const c_adt_t & adt, CellsHashT=
ype * CellsHash);
-
-	int16_t m_title;
-	AudioTrackList m_langAudio;
-	AudioTrackList m_Audio;
-	SubtitleTrackList m_langSubs;
-	SubtitleTrackList m_Subs;
-	CellsListType m_CellsList;
-	CellsListType m_langCellsList;
-
-protected:
-	ifo_handle_t *m_handle;
-};
-// ---------------------------------------------------------------------=
-------
-#endif
+// ---------------------------------------------------------------------=
-------
+#ifndef _IFO_CONTENT_H_
+#define _IFO_CONTENT_H_
+// ---------------------------------------------------------------------=
-------
+#include <QHash>
+#include <vector>
+
+#include "VobParser.h"
+#include "dvdread/ifo_read.h"
+// ---------------------------------------------------------------------=
-------
+typedef std::vector<uint8_t> IdArray;
+
+typedef QHash<int, CellListElem *> CellsHashType;
+typedef std::vector<const audio_attr_t*> AudioTrackList;
+typedef std::vector<const subp_attr_t*> SubtitleTrackList;
+
+#define MAKE_CELLS_KEY(vob_id,cell_id)  ((vob_id << 8) | cell_id)
+// ---------------------------------------------------------------------=
-------
+class IFOException { };
+class IFOFileIOException : public IFOException { };
+class IFOInvalidFileFormatException : public IFOException { };
+// ---------------------------------------------------------------------=
-------
+typedef QList<CellListElem*> CellsListBaseType;
+class CellsListType : public CellsListBaseType
+{
+public:
+	void arrange();
+	CellListElem* at(uint16_t vob_id, uint8_t cell_id) const;
+	const CellListElem* at(const cell_position_t & position) const;
+
+	// comperator for qSort()
+	static int cellListElemCompare(const CellListElem *arg1, const CellList=
Elem *arg2);
+};
+// ---------------------------------------------------------------------=
-------
+class IFOContent=20
+{
+public:
+	IFOContent(dvd_reader_t *dvdr, int16_t title);
+
+	~IFOContent()
+	{
+		ifoClose(m_handle);
+		m_CellsList.clear();
+		m_langCellsList.clear();
+	}
+
+	ifo_handle_t& Handle()
+	{
+		assert(m_handle !=3D NULL);
+		return *m_handle;
+	}
+
+	IdArray FindSubStream(uint8_t streamID, bool menu) const;
+	uint8_t FindAudioStream(uint8_t streamID, bool menu) const;
+=09
+	void GetPGCCells(const pgcit_t & pgcit, const c_adt_t & adt, CellsHashT=
ype * CellsHash);
+
+	int16_t m_title;
+	AudioTrackList m_langAudio;
+	AudioTrackList m_Audio;
+	SubtitleTrackList m_langSubs;
+	SubtitleTrackList m_Subs;
+	CellsListType m_CellsList;
+	CellsListType m_langCellsList;
+
+protected:
+	ifo_handle_t *m_handle;
+};
+// ---------------------------------------------------------------------=
-------
+#endif
 // ---------------------------------------------------------------------=
-------
\ No newline at end of file


Property changes on: trunk/DvdMenuXtractor/vobparser/IFOContent.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/vobparser/IFOFile.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/vobparser/VobParser.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/vobparser/VobParser.h	2007-02-17 10:34:40 UTC (=
rev 1276)
+++ trunk/DvdMenuXtractor/vobparser/VobParser.h	2007-02-17 10:55:54 UTC (=
rev 1277)
@@ -1,631 +1,631 @@
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-// VOBParser class
-// Copyright =A9 2002 : Christophe PARIS ([email protected])
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-#ifndef _VOB_PARSER_H_
-#define _VOB_PARSER_H_
-// ---------------------------------------------------------------------=
-------
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <stdint.h>
-
-#define HAVE_INTTYPES_H
-#include "dvdread/ifo_read.h"
-#include "mpegparser/M2VParser.h"
-
-#include <QList>
-#include <QString>
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-
-#define VIDEO_STREAM_TYPE		0x01
-#define AUDIO_STREAM_TYPE		0x02
-#define SUB_STREAM_TYPE			0x04
-
-#define AC3_STREAM_TYPE			(AUDIO_STREAM_TYPE | 0x08)
-#define DTS_STREAM_TYPE			(AUDIO_STREAM_TYPE | 0x10)
-#define PCM_STREAM_TYPE			(AUDIO_STREAM_TYPE | 0x20)
-
-
-#define AUDIO_STREAM		0xC0
-#define VIDEO_STREAM		0xE0
-
-#define SUBSTREAM_PCI       0x00
-#define SUBSTREAM_DSI       0x01
-
-#define SUBSTREAM_SUB_LOW		0x20
-#define SUBSTREAM_SUB_HIGH		(SUBSTREAM_SUB_LOW + 32)
-
-#define SUBSTREAM_AC3_LOW		0x80
-#define SUBSTREAM_AC3_HIGH		(SUBSTREAM_AC3_LOW + 8)
-
-#define SUBSTREAM_DTS_LOW		0x88
-#define SUBSTREAM_DTS_HIGH		(SUBSTREAM_DTS_LOW + 8)
-
-#define SUBSTREAM_PCM_LOW		0xA0
-#define SUBSTREAM_PCM_HIGH		(SUBSTREAM_PCM_LOW + 8)
-
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-// Type
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-
-typedef struct=20
-{
-	unsigned int vobid;
-	unsigned int cellid;
-	unsigned int start_frame;
-	unsigned int end_frame;
-	unsigned int nb_frames;
-	uint32_t start_sector;
-	uint32_t last_sector;
-	double frame_dur;
-	uint64_t start_time;
-	uint64_t duration;
-	bool isStill;
-	bool selected;
-	bool found;
-	//ButtonsListType btt_list;
-} CellListElem;
-
-typedef struct {
-	uint16_t start_x;				// Starting X position
-	uint16_t start_y;				// Starting Y position
-	uint16_t end_x;					// Ending X position
-	uint16_t end_y;					// Ending Y position
-	uint8_t btn_coln;				// Button color table number, 0=3Dnone
-	uint8_t auto_action_flag;		// Auto Action flag 0=3Dno, 1=3Dyes
-	uint8_t up;						// Button number to select if "Up" is pressed
-	uint8_t down;					// Button number to select if "Down" is pressed
-	uint8_t left;					// Button number to select if "Left" is pressed
-	uint8_t right;					// Button number to select if "Right" is pressed
-	uint8_t vm_cmd[8];				// One vm command to be executed on "action" of t=
his button
-} btni;
-
-typedef struct {
-	uint32_t nv_pck_lbn		: 32;	// Logical Block Number (sector) of this blo=
ck
-	uint16_t vobu_cat		: 16;	// Flags, including APS (Analog Protection Sys=
tem)
-	uint16_t reserved1		: 16;	// Reserved
-	uint32_t vobu_uop_ctl	: 32;	// bitmask for prohibited user operations
-	uint32_t vobu_s_ptm		: 32;	// Vobu Start Presentation Time (90KHz clk)
-	uint32_t vobu_e_ptm		: 32;	// Vobu End Presentation Time (PTM)
-	uint32_t vobu_se_e_ptm	: 32;	// End PTM of VOBU if Sequence_End_Code
-	uint32_t c_eltm			: 32;	// Cell elapsed time (BCD)
-	uint8_t  vobu_isrc[32];			// International Standard Recording Code (roy=
alty management)
-	uint32_t nsml_agli_dsta[9];		// Non-seamless angle 1 relative offset to=
 VOBU for CURRENT ILVU=20
-	uint16_t hli_ss;				// Highlight status (lower 2 bits only)
-	uint32_t hli_s_ptm;				// Highlight start time
-	uint32_t hli_e_ptm;				// Highlight end time
-	uint32_t btn_sl_e_ptm;			// Button selection end time (ignore user afte=
r this)
-	uint16_t btn_md;				// 4 nibbles which describe the grouping of the but=
tons
-	uint8_t  btn_sn;				// Starting button number
-	uint8_t  btn_ns;				// Number of buttons
-	uint8_t  nsl_btn_ns;			// Number of numerically selected buttons
-	uint8_t  reserved2;				// Reserved
-	uint8_t  fosl_btnn;				// Force select button number
-	uint8_t  foac_btnn;				// Force action button number
-	uint32_t btn_coli[3][2];		// Selection and action color and contrast va=
lues
-	btni     btnit[36];
-} nav_pci_gi;
-
-typedef struct {
-	uint32_t nv_pck_scr		: 32;	// System clock reference
-	uint32_t nv_pck_lbn		: 32;	// Logical Block Number (sector) of this blo=
ck
-	uint32_t vobu_ea		: 32;	// VOBU end address - relative offset to last s=
ector of VOBU
-	uint32_t vobu_1stref_ea	: 32;	// First reference frame end block, relat=
ive - used for fast playing
-	uint32_t vobu_2ndref_ea	: 32;	// Second reference frame end block, rela=
tive - used for fast playing
-	uint32_t vobu_3rdref_ea	: 32;	// Third reference frame end block, relat=
ive - used for fast playing
-	uint16_t vobu_vob_idn	: 16;	// VOB number
-	uint8_t  reserved		: 8;	// Reserved
-	uint8_t  vobu_c_idn		: 8;	// CELL number within VOB
-	uint32_t c_eltm			: 32;	// Cell elapsed time (BCD)
-} nav_dsi_gi;
-
-typedef struct {
-	uint8_t PES_scrambling_control : 2;
-	uint8_t PES_priority : 1;
-	uint8_t data_alignment_indicator : 1;
-	uint8_t copyright : 1;
-	uint8_t original_or_copy : 1;
-	uint8_t PTS_flag : 1;
-	uint8_t DTS_flag : 1;
-	uint8_t ESCR_flag : 1;
-	uint8_t ES_rate_flag : 1;
-	uint8_t DSM_trick_mode_flag : 1;
-	uint8_t additionnal_copy_info_flag : 1;
-	uint8_t PES_CRC_flag : 1;
-	uint8_t PES_extension_flag : 1;
-	uint8_t PES_header_data_len;
-} PES_header_data_content;
-
-typedef struct {
-	uint32_t identifier;
-	uint64_t scr;
-	uint16_t scr_ext;
-	uint32_t program_mux_rate;
-	int64_t pts;
-	int64_t dts;
-} packet_info;
-
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-// Exception
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-
-class Exception
-{
-public:
-	Exception() {}
-	Exception(const char* message)
-	{
-		strcpy(m_message, message);
-	}
-
-	char m_message[512];
-};
-
-class VobParserException : public Exception
-{
-public:
-	VobParserException() : Exception() {}
-	VobParserException(const char* message) : Exception(message) {}
-};
-
-class VobParserFileNotFoundException : public VobParserException
-{
-public:
-	VobParserFileNotFoundException(const char* filename)
-	{
-		sprintf(m_message,"File not found exception : %s", filename);
-	}
-};
-
-class VobParserInvalidPacketException : public VobParserException
-{
-public:
-	VobParserInvalidPacketException(int offset)
-	{
-		sprintf(m_message,"Invalid packet exception @LBA %d", offset);
-	}
-};
-
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-// Demuxer class
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-
-class Demuxer
-{
-public:
-	virtual ~Demuxer() {}
-	virtual void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start=
_time, uint32_t end_time, const QString & debug) =3D 0;
-	virtual void SetBoundary(uint32_t start_timecode, uint32_t duration, co=
nst CellListElem *cell) =3D 0;
-};
-
-// ---------------------------------------------------------------------=
-------
-
-class Writer : public Demuxer
-{
-public:
-	Writer(const TCHAR* filenamePrefix, const TCHAR* extension, double fps)
-		:m_file(NULL)
-		,m_TimecodeFile(NULL)
-		,m_fps(fps)
-	{
-#ifdef UNICODE
-		m_Filename =3D QString::fromUtf16(reinterpret_cast<const ushort*>(file=
namePrefix));
-		m_fileExtension =3D QString::fromUtf16(reinterpret_cast<const ushort*>=
(extension));
-#else
-		m_Filename =3D filenamePrefix;
-		m_fileExtension =3D extension;
-#endif
-	}
-
-	virtual ~Writer()
-	{
-		if(m_file)
-		{
-			fclose(m_file);
-		}
-		if (m_TimecodeFile)
-			fclose(m_TimecodeFile);
-	}
-
-	virtual void Write(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
-	{
-		m_file =3D OpenOuputFile();
-		WriteTimecodeInfo(start_time, end_time, ftell(m_file), debug);
-		fwrite(buff, 1, size, m_file);
-	}
-
-	bool FileExists() const {
-		return m_file !=3D NULL;
-	}
-
-protected:
-	inline FILE* GetTimecodeFile()
-	{
-		if (!m_TimecodeFile)
-		{
-			QString m_filename =3D QString("%1_%2.tmc").arg(m_Filename).arg(m_fil=
eExtension);
-#ifdef UNICODE
-			const wchar_t *name =3D reinterpret_cast<const wchar_t*>(m_filename.u=
tf16());
-			m_TimecodeFile =3D _tfopen(name, _T("w"));
-#else
-			m_TimecodeFile =3D fopen(qPrintable(m_filename),"w");
-#endif
-			fwrite("# timecode format v3\n", 1, 21, m_TimecodeFile);
-			fprintf(m_TimecodeFile, "assume %lf\n", m_fps);
-		}
-		return m_TimecodeFile;
-	}
-
-	inline FILE* OpenOuputFile()
-	{
-		if(!m_file)
-		{
-			QString m_filename =3D QString("%1.%2").arg(m_Filename).arg(m_fileExt=
ension);
-#ifdef UNICODE
-			const wchar_t *name =3D reinterpret_cast<const wchar_t*>(m_filename.u=
tf16());
-			m_file =3D _tfopen(name, _T("wb"));
-#else
-			m_file =3D fopen(qPrintable(m_filename),"wb");
-#endif
-		}
-		return m_file;
-	}
-
-	QString m_Filename;
-	QString m_fileExtension;
-	FILE* m_file;
-	FILE* m_TimecodeFile;
-	double m_fps;
-
-	virtual void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, =
uint64_t filepos, const QString& debug) =3D 0;
-};
-
-// ---------------------------------------------------------------------=
-------
-
-class VideoDemuxWriter : public Writer
-{
-public:
-	VideoDemuxWriter(const TCHAR* filenamePrefix, double fps)
-		:Writer(filenamePrefix, _T("m2v"), fps)=20
-		,m_end_timecode(0)
-		,m_last_start_timecode(0)
-		,m_last_end_timecode(0)
-		,m_is_still(false)
-		,m_parser(NULL)
-	{}
-	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug);
-	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
-	~VideoDemuxWriter();
-protected:
-	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
-	uint32_t m_start_timecode;
-	uint32_t m_end_timecode;
-	uint32_t m_last_start_timecode;
-	uint32_t m_last_end_timecode;
-	bool m_is_still;
-
-	M2VParser * m_parser;
-};
-
-// ---------------------------------------------------------------------=
-------
-
-class AC3DemuxWriter : public Writer
-{
-public:
-	AC3DemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID)
-		:Writer(filenamePrefix, _T("ac3"), 0.0)
-		,m_streamID(streamID)
-		,m_end_timecode(0)
-		,m_last_start_timecode(0)
-		,m_last_end_timecode(0)
-	{}
-	~AC3DemuxWriter();
-	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
-	{
-		Write(buff,size, start_time, end_time, debug);
-	}
-	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
-private:
-	uint8_t m_streamID;
-protected:
-	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
-	uint32_t m_start_timecode;
-	uint32_t m_end_timecode;
-	uint32_t m_last_start_timecode;
-	uint32_t m_last_end_timecode;
-};
-
-// ---------------------------------------------------------------------=
-------
-
-class DTSDemuxWriter : public Writer
-{
-public:
-	DTSDemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID)
-		:Writer(filenamePrefix, _T("dts"),0.0)
-		,m_streamID(streamID)
-		,m_end_timecode(0)
-		,m_last_start_timecode(0)
-		,m_last_end_timecode(0)
-	{}
-	~DTSDemuxWriter();
-	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
-	{
-		Write(buff,size, start_time, end_time, debug);
-	}
-	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
-private:
-	uint8_t m_streamID;
-protected:
-	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
-	uint32_t m_start_timecode;
-	uint32_t m_end_timecode;
-	uint32_t m_last_start_timecode;
-	uint32_t m_last_end_timecode;
-};
-
-// ---------------------------------------------------------------------=
-------
-
-class WavWriter : public Writer
-{
-	public:
-		WavWriter(const TCHAR* filenamePrefix, double fps, uint32_t sample_rat=
e, uint8_t bit_depth, uint8_t channel_nb)
-			:Writer(filenamePrefix, _T("wav"), fps)
-			,m_sample_rate(sample_rate)
-			,m_bit_depth(bit_depth)
-			,m_channel_nb(channel_nb)
-		{}
-		~WavWriter();
-		void Write(uint8_t* buff, uint32_t size, uint32_t start_time, uint32_t=
 end_time, const QString& debug);
-	protected:
-		uint32_t m_sample_rate;
-		uint8_t m_bit_depth, m_channel_nb;
-		size_t m_size_position1,m_size_position2, m_size;
-};
-
-class LPCMDemuxWriter : public WavWriter
-{
-public:
-	LPCMDemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID, ui=
nt32_t sample_rate, uint8_t bit_depth, uint8_t channel_nb)
-		:WavWriter(filenamePrefix,0.0, sample_rate, bit_depth, channel_nb)
-		,m_streamID(streamID)
-		,m_end_timecode(0)
-		,m_last_start_timecode(0)
-		,m_last_end_timecode(0)
-	{}
-	~LPCMDemuxWriter();
-	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
-	{
-		Write(buff,size, start_time, end_time, debug);
-	}
-	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
-private:
-	uint8_t m_streamID;
-protected:
-	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
-	uint32_t m_start_timecode;
-	uint32_t m_end_timecode;
-	uint32_t m_last_start_timecode;
-	uint32_t m_last_end_timecode;
-};
-
-// ---------------------------------------------------------------------=
-------
-
-class MPADemuxWriter : public Writer
-{
-public:
-	MPADemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID) :
-	  Writer(filenamePrefix, _T("mpa"),0.0), m_streamID(streamID) {}
-	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
-	{
-		Write(buff,size, start_time, end_time, debug);
-	}
-	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
-private:
-	uint8_t m_streamID;
-protected:
-	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
-};
-
-// ---------------------------------------------------------------------=
-------
-
-class SubDemuxWriter : public Writer
-{
-public:
-	SubDemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID, uin=
t16_t width, uint16_t height, const uint32_t * palette, uint16_t language=
, bool forced)
-		:Writer(filenamePrefix, _T("sub"),0.0)
-		,m_width(width)
-		,m_height(height)
-		,m_forced(forced)
-		,m_palette(palette)
-		,m_language(language)
-		,m_start_timecode(0)
-		,m_end_timecode(0)
-	{}
-	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
-	{
-		Write(buff,size, start_time, end_time, debug);
-	}
-	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
-protected:
-	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
-private:
-	uint16_t m_width;
-	uint16_t m_height;
-	bool m_forced;
-	const uint32_t * m_palette;
-	uint16_t m_language;
-	uint32_t m_start_timecode;
-	uint32_t m_end_timecode;
-};
-
-// ---------------------------------------------------------------------=
-------
-
-class BtnDemuxWriter : public Writer
-{
-public:
-	BtnDemuxWriter(const TCHAR* filenamePrefix, uint16_t width, uint16_t he=
ight)
-		:Writer(filenamePrefix, _T("btn"),0.0)
-		,m_width(width)
-		,m_height(height)
-		,m_end_timecode(0)
-		,m_last_start_timecode(0)
-		,m_last_end_timecode(0)
-	{}
-	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
-	{
-		if (!m_file) {
-			m_file =3D OpenOuputFile();
-			fwrite("butonDVD", 8, 1, m_file);
-			uint8_t _tmp[4];
-			// width & height
-			_tmp[0] =3D m_width >> 8;
-			_tmp[1] =3D m_width & 0xFF;
-			_tmp[2] =3D m_height >> 8;
-			_tmp[3] =3D m_height & 0xFF;
-			fwrite(_tmp, 4, 1, m_file);
-			// pad to 16 bytes
-			_tmp[0] =3D 0;
-			_tmp[1] =3D 0;
-			_tmp[2] =3D 0;
-			_tmp[3] =3D 0;
-			fwrite(_tmp, 4, 1, m_file);
-		}
-		Write(buff,size, start_time, end_time, debug);
-	}
-	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
-	~BtnDemuxWriter();
-protected:
-	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
-	uint16_t m_width, m_height;
-	uint32_t m_start_timecode;
-	uint32_t m_end_timecode;
-	uint32_t m_last_start_timecode;
-	uint32_t m_last_end_timecode;
-};
-
-// ---------------------------------------------------------------------=
-------
-
-class CompositeDemuxWriter
-{
-public:
-	CompositeDemuxWriter();
-	~CompositeDemuxWriter();
-	bool AddDemuxer(uint8_t streamID, Writer * demuxer, QString& CommandLin=
e);
-	void ProcessStream(int streamID, uint8_t* buff, uint32_t size, int32_t =
start_time, int32_t end_time, const QString& debug);
-	void Reset();
-	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
-
-	bool FileExists(uint8_t streamID) const {
-		return (m_muxers[streamID] !=3D NULL && m_muxers[streamID]->FileExists=
());
-	}
-
-	const QString& GetString(uint8_t streamID) const {
-		return m_strings[streamID];
-	}
-
-protected:
-	Writer * m_muxers[256];
-	QString m_strings[256];
-};
-
-// ---------------------------------------------------------------------=
-------
-
-struct stream_info_node
-{
-	uint8_t id;
-	uint32_t type;
-	stream_info_node* next;
-};
-
-
-// ---------------------------------------------------------------------=
-------
-
-typedef struct=20
-{
-	int x1;
-	int y1;
-	int x2;
-	int y2;
-} ButtonListElem;
-
-typedef QList<ButtonListElem *> ButtonListType;
-
-
-// ---------------------------------------------------------------------=
-------
-
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-// Main class
-// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
-
-class IFOFile;
-class CellsListType;
-
-class VobParser
-{
-public:
-	VobParser(const char* dirname, int16_t title, bool menu);
-	void Reset();
-	bool ParseNextPacket(const CellsListType & Cells);
-	uint32_t GetPacketCount() const;
-	uint32_t GetPacketIndex() const;
-	char* GetCurrentPacketData() const;
-	inline uint8_t GetVobID() const;
-	inline uint8_t GetCellID() const;
-	bool IsNewCell();
-	virtual ~VobParser();
-	inline CompositeDemuxWriter & GetDemuxer()
-	{
-		return m_demuxer;
-	}
-	uint32_t GetCellSCR() const;
-
-	nav_dsi_gi m_dsi;
-	nav_pci_gi m_pci;
-	packet_info pktinfo;
-	PES_header_data_content pes_header_data_content;
-protected:
-	void ParseNavPacket();
-	void ParseAudioPacket(int StreamID);
-	void ParseVideoPacket();
-	void ParsePrivateStream1();
-
-	void ParseSCR();
-	void ParsePCI();
-	void ParseDSI();
-	void ParsePESHeaderDataContentFlag();
-	void ParsePESHeaderData();
-	uint64_t ParsePTS_DTS();
-
-	// Buffer management
-	bool AvailablePacketData() const;
-	bool GetNextPacket();
-	uint32_t GetNext32Bits();
-	uint16_t GetNext16Bits();
-	uint8_t GetNext8Bits();
-	void SkipNBytes(int n);
-
-private:
-	int16_t m_title;
-	dvd_reader_t *m_dvdhandle;
-	dvd_file_t *m_stream;
-	bool m_language;
-	uint8_t m_buff[DVD_VIDEO_LB_LEN];
-	uint32_t m_index;
-	uint32_t m_pktindex;
-	uint32_t m_pktcount;
-	bool m_bFirstPacket;
-	int64_t m_startpts;
-	int64_t m_startdts;
-	uint16_t m_pci_position;
-	uint16_t m_pci_size;
-	uint32_t m_pci_vob_timecode_offset;
-=09
-	CompositeDemuxWriter m_demuxer;
-
-	int previous_vobid, previous_cellid;
-};
-
-// ---------------------------------------------------------------------=
-------
-#endif
-// ---------------------------------------------------------------------=
-------
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+// VOBParser class
+// Copyright =A9 2002 : Christophe PARIS ([email protected])
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+#ifndef _VOB_PARSER_H_
+#define _VOB_PARSER_H_
+// ---------------------------------------------------------------------=
-------
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdint.h>
+
+#define HAVE_INTTYPES_H
+#include "dvdread/ifo_read.h"
+#include "mpegparser/M2VParser.h"
+
+#include <QList>
+#include <QString>
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+
+#define VIDEO_STREAM_TYPE		0x01
+#define AUDIO_STREAM_TYPE		0x02
+#define SUB_STREAM_TYPE			0x04
+
+#define AC3_STREAM_TYPE			(AUDIO_STREAM_TYPE | 0x08)
+#define DTS_STREAM_TYPE			(AUDIO_STREAM_TYPE | 0x10)
+#define PCM_STREAM_TYPE			(AUDIO_STREAM_TYPE | 0x20)
+
+
+#define AUDIO_STREAM		0xC0
+#define VIDEO_STREAM		0xE0
+
+#define SUBSTREAM_PCI       0x00
+#define SUBSTREAM_DSI       0x01
+
+#define SUBSTREAM_SUB_LOW		0x20
+#define SUBSTREAM_SUB_HIGH		(SUBSTREAM_SUB_LOW + 32)
+
+#define SUBSTREAM_AC3_LOW		0x80
+#define SUBSTREAM_AC3_HIGH		(SUBSTREAM_AC3_LOW + 8)
+
+#define SUBSTREAM_DTS_LOW		0x88
+#define SUBSTREAM_DTS_HIGH		(SUBSTREAM_DTS_LOW + 8)
+
+#define SUBSTREAM_PCM_LOW		0xA0
+#define SUBSTREAM_PCM_HIGH		(SUBSTREAM_PCM_LOW + 8)
+
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+// Type
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+
+typedef struct=20
+{
+	unsigned int vobid;
+	unsigned int cellid;
+	unsigned int start_frame;
+	unsigned int end_frame;
+	unsigned int nb_frames;
+	uint32_t start_sector;
+	uint32_t last_sector;
+	double frame_dur;
+	uint64_t start_time;
+	uint64_t duration;
+	bool isStill;
+	bool selected;
+	bool found;
+	//ButtonsListType btt_list;
+} CellListElem;
+
+typedef struct {
+	uint16_t start_x;				// Starting X position
+	uint16_t start_y;				// Starting Y position
+	uint16_t end_x;					// Ending X position
+	uint16_t end_y;					// Ending Y position
+	uint8_t btn_coln;				// Button color table number, 0=3Dnone
+	uint8_t auto_action_flag;		// Auto Action flag 0=3Dno, 1=3Dyes
+	uint8_t up;						// Button number to select if "Up" is pressed
+	uint8_t down;					// Button number to select if "Down" is pressed
+	uint8_t left;					// Button number to select if "Left" is pressed
+	uint8_t right;					// Button number to select if "Right" is pressed
+	uint8_t vm_cmd[8];				// One vm command to be executed on "action" of t=
his button
+} btni;
+
+typedef struct {
+	uint32_t nv_pck_lbn		: 32;	// Logical Block Number (sector) of this blo=
ck
+	uint16_t vobu_cat		: 16;	// Flags, including APS (Analog Protection Sys=
tem)
+	uint16_t reserved1		: 16;	// Reserved
+	uint32_t vobu_uop_ctl	: 32;	// bitmask for prohibited user operations
+	uint32_t vobu_s_ptm		: 32;	// Vobu Start Presentation Time (90KHz clk)
+	uint32_t vobu_e_ptm		: 32;	// Vobu End Presentation Time (PTM)
+	uint32_t vobu_se_e_ptm	: 32;	// End PTM of VOBU if Sequence_End_Code
+	uint32_t c_eltm			: 32;	// Cell elapsed time (BCD)
+	uint8_t  vobu_isrc[32];			// International Standard Recording Code (roy=
alty management)
+	uint32_t nsml_agli_dsta[9];		// Non-seamless angle 1 relative offset to=
 VOBU for CURRENT ILVU=20
+	uint16_t hli_ss;				// Highlight status (lower 2 bits only)
+	uint32_t hli_s_ptm;				// Highlight start time
+	uint32_t hli_e_ptm;				// Highlight end time
+	uint32_t btn_sl_e_ptm;			// Button selection end time (ignore user afte=
r this)
+	uint16_t btn_md;				// 4 nibbles which describe the grouping of the but=
tons
+	uint8_t  btn_sn;				// Starting button number
+	uint8_t  btn_ns;				// Number of buttons
+	uint8_t  nsl_btn_ns;			// Number of numerically selected buttons
+	uint8_t  reserved2;				// Reserved
+	uint8_t  fosl_btnn;				// Force select button number
+	uint8_t  foac_btnn;				// Force action button number
+	uint32_t btn_coli[3][2];		// Selection and action color and contrast va=
lues
+	btni     btnit[36];
+} nav_pci_gi;
+
+typedef struct {
+	uint32_t nv_pck_scr		: 32;	// System clock reference
+	uint32_t nv_pck_lbn		: 32;	// Logical Block Number (sector) of this blo=
ck
+	uint32_t vobu_ea		: 32;	// VOBU end address - relative offset to last s=
ector of VOBU
+	uint32_t vobu_1stref_ea	: 32;	// First reference frame end block, relat=
ive - used for fast playing
+	uint32_t vobu_2ndref_ea	: 32;	// Second reference frame end block, rela=
tive - used for fast playing
+	uint32_t vobu_3rdref_ea	: 32;	// Third reference frame end block, relat=
ive - used for fast playing
+	uint16_t vobu_vob_idn	: 16;	// VOB number
+	uint8_t  reserved		: 8;	// Reserved
+	uint8_t  vobu_c_idn		: 8;	// CELL number within VOB
+	uint32_t c_eltm			: 32;	// Cell elapsed time (BCD)
+} nav_dsi_gi;
+
+typedef struct {
+	uint8_t PES_scrambling_control : 2;
+	uint8_t PES_priority : 1;
+	uint8_t data_alignment_indicator : 1;
+	uint8_t copyright : 1;
+	uint8_t original_or_copy : 1;
+	uint8_t PTS_flag : 1;
+	uint8_t DTS_flag : 1;
+	uint8_t ESCR_flag : 1;
+	uint8_t ES_rate_flag : 1;
+	uint8_t DSM_trick_mode_flag : 1;
+	uint8_t additionnal_copy_info_flag : 1;
+	uint8_t PES_CRC_flag : 1;
+	uint8_t PES_extension_flag : 1;
+	uint8_t PES_header_data_len;
+} PES_header_data_content;
+
+typedef struct {
+	uint32_t identifier;
+	uint64_t scr;
+	uint16_t scr_ext;
+	uint32_t program_mux_rate;
+	int64_t pts;
+	int64_t dts;
+} packet_info;
+
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+// Exception
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+
+class Exception
+{
+public:
+	Exception() {}
+	Exception(const char* message)
+	{
+		strcpy(m_message, message);
+	}
+
+	char m_message[512];
+};
+
+class VobParserException : public Exception
+{
+public:
+	VobParserException() : Exception() {}
+	VobParserException(const char* message) : Exception(message) {}
+};
+
+class VobParserFileNotFoundException : public VobParserException
+{
+public:
+	VobParserFileNotFoundException(const char* filename)
+	{
+		sprintf(m_message,"File not found exception : %s", filename);
+	}
+};
+
+class VobParserInvalidPacketException : public VobParserException
+{
+public:
+	VobParserInvalidPacketException(int offset)
+	{
+		sprintf(m_message,"Invalid packet exception @LBA %d", offset);
+	}
+};
+
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+// Demuxer class
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+
+class Demuxer
+{
+public:
+	virtual ~Demuxer() {}
+	virtual void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start=
_time, uint32_t end_time, const QString & debug) =3D 0;
+	virtual void SetBoundary(uint32_t start_timecode, uint32_t duration, co=
nst CellListElem *cell) =3D 0;
+};
+
+// ---------------------------------------------------------------------=
-------
+
+class Writer : public Demuxer
+{
+public:
+	Writer(const TCHAR* filenamePrefix, const TCHAR* extension, double fps)
+		:m_file(NULL)
+		,m_TimecodeFile(NULL)
+		,m_fps(fps)
+	{
+#ifdef UNICODE
+		m_Filename =3D QString::fromUtf16(reinterpret_cast<const ushort*>(file=
namePrefix));
+		m_fileExtension =3D QString::fromUtf16(reinterpret_cast<const ushort*>=
(extension));
+#else
+		m_Filename =3D filenamePrefix;
+		m_fileExtension =3D extension;
+#endif
+	}
+
+	virtual ~Writer()
+	{
+		if(m_file)
+		{
+			fclose(m_file);
+		}
+		if (m_TimecodeFile)
+			fclose(m_TimecodeFile);
+	}
+
+	virtual void Write(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
+	{
+		m_file =3D OpenOuputFile();
+		WriteTimecodeInfo(start_time, end_time, ftell(m_file), debug);
+		fwrite(buff, 1, size, m_file);
+	}
+
+	bool FileExists() const {
+		return m_file !=3D NULL;
+	}
+
+protected:
+	inline FILE* GetTimecodeFile()
+	{
+		if (!m_TimecodeFile)
+		{
+			QString m_filename =3D QString("%1_%2.tmc").arg(m_Filename).arg(m_fil=
eExtension);
+#ifdef UNICODE
+			const wchar_t *name =3D reinterpret_cast<const wchar_t*>(m_filename.u=
tf16());
+			m_TimecodeFile =3D _tfopen(name, _T("w"));
+#else
+			m_TimecodeFile =3D fopen(qPrintable(m_filename),"w");
+#endif
+			fwrite("# timecode format v3\n", 1, 21, m_TimecodeFile);
+			fprintf(m_TimecodeFile, "assume %lf\n", m_fps);
+		}
+		return m_TimecodeFile;
+	}
+
+	inline FILE* OpenOuputFile()
+	{
+		if(!m_file)
+		{
+			QString m_filename =3D QString("%1.%2").arg(m_Filename).arg(m_fileExt=
ension);
+#ifdef UNICODE
+			const wchar_t *name =3D reinterpret_cast<const wchar_t*>(m_filename.u=
tf16());
+			m_file =3D _tfopen(name, _T("wb"));
+#else
+			m_file =3D fopen(qPrintable(m_filename),"wb");
+#endif
+		}
+		return m_file;
+	}
+
+	QString m_Filename;
+	QString m_fileExtension;
+	FILE* m_file;
+	FILE* m_TimecodeFile;
+	double m_fps;
+
+	virtual void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, =
uint64_t filepos, const QString& debug) =3D 0;
+};
+
+// ---------------------------------------------------------------------=
-------
+
+class VideoDemuxWriter : public Writer
+{
+public:
+	VideoDemuxWriter(const TCHAR* filenamePrefix, double fps)
+		:Writer(filenamePrefix, _T("m2v"), fps)=20
+		,m_end_timecode(0)
+		,m_last_start_timecode(0)
+		,m_last_end_timecode(0)
+		,m_is_still(false)
+		,m_parser(NULL)
+	{}
+	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug);
+	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
+	~VideoDemuxWriter();
+protected:
+	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
+	uint32_t m_start_timecode;
+	uint32_t m_end_timecode;
+	uint32_t m_last_start_timecode;
+	uint32_t m_last_end_timecode;
+	bool m_is_still;
+
+	M2VParser * m_parser;
+};
+
+// ---------------------------------------------------------------------=
-------
+
+class AC3DemuxWriter : public Writer
+{
+public:
+	AC3DemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID)
+		:Writer(filenamePrefix, _T("ac3"), 0.0)
+		,m_streamID(streamID)
+		,m_end_timecode(0)
+		,m_last_start_timecode(0)
+		,m_last_end_timecode(0)
+	{}
+	~AC3DemuxWriter();
+	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
+	{
+		Write(buff,size, start_time, end_time, debug);
+	}
+	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
+private:
+	uint8_t m_streamID;
+protected:
+	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
+	uint32_t m_start_timecode;
+	uint32_t m_end_timecode;
+	uint32_t m_last_start_timecode;
+	uint32_t m_last_end_timecode;
+};
+
+// ---------------------------------------------------------------------=
-------
+
+class DTSDemuxWriter : public Writer
+{
+public:
+	DTSDemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID)
+		:Writer(filenamePrefix, _T("dts"),0.0)
+		,m_streamID(streamID)
+		,m_end_timecode(0)
+		,m_last_start_timecode(0)
+		,m_last_end_timecode(0)
+	{}
+	~DTSDemuxWriter();
+	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
+	{
+		Write(buff,size, start_time, end_time, debug);
+	}
+	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
+private:
+	uint8_t m_streamID;
+protected:
+	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
+	uint32_t m_start_timecode;
+	uint32_t m_end_timecode;
+	uint32_t m_last_start_timecode;
+	uint32_t m_last_end_timecode;
+};
+
+// ---------------------------------------------------------------------=
-------
+
+class WavWriter : public Writer
+{
+	public:
+		WavWriter(const TCHAR* filenamePrefix, double fps, uint32_t sample_rat=
e, uint8_t bit_depth, uint8_t channel_nb)
+			:Writer(filenamePrefix, _T("wav"), fps)
+			,m_sample_rate(sample_rate)
+			,m_bit_depth(bit_depth)
+			,m_channel_nb(channel_nb)
+		{}
+		~WavWriter();
+		void Write(uint8_t* buff, uint32_t size, uint32_t start_time, uint32_t=
 end_time, const QString& debug);
+	protected:
+		uint32_t m_sample_rate;
+		uint8_t m_bit_depth, m_channel_nb;
+		size_t m_size_position1,m_size_position2, m_size;
+};
+
+class LPCMDemuxWriter : public WavWriter
+{
+public:
+	LPCMDemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID, ui=
nt32_t sample_rate, uint8_t bit_depth, uint8_t channel_nb)
+		:WavWriter(filenamePrefix,0.0, sample_rate, bit_depth, channel_nb)
+		,m_streamID(streamID)
+		,m_end_timecode(0)
+		,m_last_start_timecode(0)
+		,m_last_end_timecode(0)
+	{}
+	~LPCMDemuxWriter();
+	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
+	{
+		Write(buff,size, start_time, end_time, debug);
+	}
+	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
+private:
+	uint8_t m_streamID;
+protected:
+	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
+	uint32_t m_start_timecode;
+	uint32_t m_end_timecode;
+	uint32_t m_last_start_timecode;
+	uint32_t m_last_end_timecode;
+};
+
+// ---------------------------------------------------------------------=
-------
+
+class MPADemuxWriter : public Writer
+{
+public:
+	MPADemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID) :
+	  Writer(filenamePrefix, _T("mpa"),0.0), m_streamID(streamID) {}
+	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
+	{
+		Write(buff,size, start_time, end_time, debug);
+	}
+	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
+private:
+	uint8_t m_streamID;
+protected:
+	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
+};
+
+// ---------------------------------------------------------------------=
-------
+
+class SubDemuxWriter : public Writer
+{
+public:
+	SubDemuxWriter(const TCHAR* filenamePrefix, const uint8_t streamID, uin=
t16_t width, uint16_t height, const uint32_t * palette, uint16_t language=
, bool forced)
+		:Writer(filenamePrefix, _T("sub"),0.0)
+		,m_width(width)
+		,m_height(height)
+		,m_forced(forced)
+		,m_palette(palette)
+		,m_language(language)
+		,m_start_timecode(0)
+		,m_end_timecode(0)
+	{}
+	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
+	{
+		Write(buff,size, start_time, end_time, debug);
+	}
+	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
+protected:
+	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
+private:
+	uint16_t m_width;
+	uint16_t m_height;
+	bool m_forced;
+	const uint32_t * m_palette;
+	uint16_t m_language;
+	uint32_t m_start_timecode;
+	uint32_t m_end_timecode;
+};
+
+// ---------------------------------------------------------------------=
-------
+
+class BtnDemuxWriter : public Writer
+{
+public:
+	BtnDemuxWriter(const TCHAR* filenamePrefix, uint16_t width, uint16_t he=
ight)
+		:Writer(filenamePrefix, _T("btn"),0.0)
+		,m_width(width)
+		,m_height(height)
+		,m_end_timecode(0)
+		,m_last_start_timecode(0)
+		,m_last_end_timecode(0)
+	{}
+	void ProcessStream(uint8_t* buff, uint32_t size, uint32_t start_time, u=
int32_t end_time, const QString& debug)
+	{
+		if (!m_file) {
+			m_file =3D OpenOuputFile();
+			fwrite("butonDVD", 8, 1, m_file);
+			uint8_t _tmp[4];
+			// width & height
+			_tmp[0] =3D m_width >> 8;
+			_tmp[1] =3D m_width & 0xFF;
+			_tmp[2] =3D m_height >> 8;
+			_tmp[3] =3D m_height & 0xFF;
+			fwrite(_tmp, 4, 1, m_file);
+			// pad to 16 bytes
+			_tmp[0] =3D 0;
+			_tmp[1] =3D 0;
+			_tmp[2] =3D 0;
+			_tmp[3] =3D 0;
+			fwrite(_tmp, 4, 1, m_file);
+		}
+		Write(buff,size, start_time, end_time, debug);
+	}
+	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
+	~BtnDemuxWriter();
+protected:
+	void WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t=
 filepos, const QString& debug);
+	uint16_t m_width, m_height;
+	uint32_t m_start_timecode;
+	uint32_t m_end_timecode;
+	uint32_t m_last_start_timecode;
+	uint32_t m_last_end_timecode;
+};
+
+// ---------------------------------------------------------------------=
-------
+
+class CompositeDemuxWriter
+{
+public:
+	CompositeDemuxWriter();
+	~CompositeDemuxWriter();
+	bool AddDemuxer(uint8_t streamID, Writer * demuxer, QString& CommandLin=
e);
+	void ProcessStream(int streamID, uint8_t* buff, uint32_t size, int32_t =
start_time, int32_t end_time, const QString& debug);
+	void Reset();
+	void SetBoundary(uint32_t start_timecode, uint32_t duration, const Cell=
ListElem *cell);
+
+	bool FileExists(uint8_t streamID) const {
+		return (m_muxers[streamID] !=3D NULL && m_muxers[streamID]->FileExists=
());
+	}
+
+	const QString& GetString(uint8_t streamID) const {
+		return m_strings[streamID];
+	}
+
+protected:
+	Writer * m_muxers[256];
+	QString m_strings[256];
+};
+
+// ---------------------------------------------------------------------=
-------
+
+struct stream_info_node
+{
+	uint8_t id;
+	uint32_t type;
+	stream_info_node* next;
+};
+
+
+// ---------------------------------------------------------------------=
-------
+
+typedef struct=20
+{
+	int x1;
+	int y1;
+	int x2;
+	int y2;
+} ButtonListElem;
+
+typedef QList<ButtonListElem *> ButtonListType;
+
+
+// ---------------------------------------------------------------------=
-------
+
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+// Main class
+// =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+
+class IFOFile;
+class CellsListType;
+
+class VobParser
+{
+public:
+	VobParser(const char* dirname, int16_t title, bool menu);
+	void Reset();
+	bool ParseNextPacket(const CellsListType & Cells);
+	uint32_t GetPacketCount() const;
+	uint32_t GetPacketIndex() const;
+	char* GetCurrentPacketData() const;
+	inline uint8_t GetVobID() const;
+	inline uint8_t GetCellID() const;
+	bool IsNewCell();
+	virtual ~VobParser();
+	inline CompositeDemuxWriter & GetDemuxer()
+	{
+		return m_demuxer;
+	}
+	uint32_t GetCellSCR() const;
+
+	nav_dsi_gi m_dsi;
+	nav_pci_gi m_pci;
+	packet_info pktinfo;
+	PES_header_data_content pes_header_data_content;
+protected:
+	void ParseNavPacket();
+	void ParseAudioPacket(int StreamID);
+	void ParseVideoPacket();
+	void ParsePrivateStream1();
+
+	void ParseSCR();
+	void ParsePCI();
+	void ParseDSI();
+	void ParsePESHeaderDataContentFlag();
+	void ParsePESHeaderData();
+	uint64_t ParsePTS_DTS();
+
+	// Buffer management
+	bool AvailablePacketData() const;
+	bool GetNextPacket();
+	uint32_t GetNext32Bits();
+	uint16_t GetNext16Bits();
+	uint8_t GetNext8Bits();
+	void SkipNBytes(int n);
+
+private:
+	int16_t m_title;
+	dvd_reader_t *m_dvdhandle;
+	dvd_file_t *m_stream;
+	bool m_language;
+	uint8_t m_buff[DVD_VIDEO_LB_LEN];
+	uint32_t m_index;
+	uint32_t m_pktindex;
+	uint32_t m_pktcount;
+	bool m_bFirstPacket;
+	int64_t m_startpts;
+	int64_t m_startdts;
+	uint16_t m_pci_position;
+	uint16_t m_pci_size;
+	uint32_t m_pci_vob_timecode_offset;
+=09
+	CompositeDemuxWriter m_demuxer;
+
+	int previous_vobid, previous_cellid;
+};
+
+// ---------------------------------------------------------------------=
-------
+#endif
+// ---------------------------------------------------------------------=
-------


Property changes on: trunk/DvdMenuXtractor/vobparser/VobParser.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/DvdMenuXtractor/vobparser/iso/iso_lang.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/DvdMenuXtractor/vobparser/vobparser.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/DvdMenuXtractor/vobparser/vobparser.proj	2007-02-17 10:34:40 UT=
C (rev 1276)
+++ trunk/DvdMenuXtractor/vobparser/vobparser.proj	2007-02-17 10:55:54 UT=
C (rev 1277)
@@ -1,14 +1,14 @@
-GROUP vobparser
-{
-  SOURCE IFOContent.cpp
-  SOURCE IFOFile.cpp
-  SOURCE VobParser.cpp
-  SOURCE iso/iso_lang.c
-
-  HEADER IFOContent.h
-  HEADER IFOFile.h
-  HEADER VobParser.h
-  HEADER iso/iso_lang.h
- =20
-  INCLUDE ..
-}
+GROUP vobparser
+{
+  SOURCE IFOContent.cpp
+  SOURCE IFOFile.cpp
+  SOURCE VobParser.cpp
+  SOURCE iso/iso_lang.c
+
+  HEADER IFOContent.h
+  HEADER IFOFile.h
+  HEADER VobParser.h
+  HEADER iso/iso_lang.h
+ =20
+  INCLUDE ..
+}


Property changes on: trunk/DvdMenuXtractor/vobparser/vobparser.proj
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/ac3_input/ac3file.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/ac3_input/ac3frame.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/ac3_input/ac3iframe.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/ac3_input/c_types.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/avi_input/avilib.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/matroska_writer/matroska_writer.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/matroska_writer/matroska_writer_gui.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/mpa_input/c_types.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/mpa_input/mpafile.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/mpa_input/mpaframe.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/mpa_input/mpiframe.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/tinyXML/tinystr.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/tinyXML/tinyxml.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/Config.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/Endian.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/FourCC.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/Types.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/c_types.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/chunk.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/fact.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/fio.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/format.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/riff.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/wav.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/LemAPI/wav_input/wav2mka.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/AviTagReader.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/AviTagReader.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/AviTagReader.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,71 +1,71 @@
-/*
- *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
- *
- *  AviTagReader.h
- *
- *  Copyright (C) Jory Stone - 2003
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file AviTagReader.h
-		\version \$Id: AviTagReader.h,v 1.2 2003/10/05 23:58:05 jcsston Exp $
-    \brief A AVI Tag Importer
-		\author Jory Stone     <jcsston @ toughguy.net>
-
-*/
-
-#ifndef _AVI_TAG_READER_H_
-#define _AVI_TAG_READER_H_
-
-#include "TagReader.h"
-#include <time.h>
-#include "MatroskaUtilsReader.h"
-
-using namespace MatroskaUtilsNamespace;
-
-struct iDivxTag {
-	char Movie[32];
-	char Author[28];
-	char Year[4];
-	char Comment[48];
-	char Genre[3];
-	char Rating;
-	char Header[12];
-};
-
-struct AviTag {
-	std::string id;
-	std::string value;
-};
-
-class AviTagReader : public TagReader {
-public:
-	AviTagReader(const JString &filename);
-
-	void ReadFile(const JString &filename);
-	bool HasTags();
-	void ImportTags(MatroskaTagInfo *target);
-
-protected:
-	int64 GetDate(const std::string &dateStr);
-	JString m_AviFilename;
-	std::vector<AviTag> m_Tags;
-	iDivxTag m_DivxTag;
-};
-
-#endif // _AVI_TAG_READER_H_
+/*
+ *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
+ *
+ *  AviTagReader.h
+ *
+ *  Copyright (C) Jory Stone - 2003
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file AviTagReader.h
+		\version \$Id: AviTagReader.h,v 1.2 2003/10/05 23:58:05 jcsston Exp $
+    \brief A AVI Tag Importer
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+#ifndef _AVI_TAG_READER_H_
+#define _AVI_TAG_READER_H_
+
+#include "TagReader.h"
+#include <time.h>
+#include "MatroskaUtilsReader.h"
+
+using namespace MatroskaUtilsNamespace;
+
+struct iDivxTag {
+	char Movie[32];
+	char Author[28];
+	char Year[4];
+	char Comment[48];
+	char Genre[3];
+	char Rating;
+	char Header[12];
+};
+
+struct AviTag {
+	std::string id;
+	std::string value;
+};
+
+class AviTagReader : public TagReader {
+public:
+	AviTagReader(const JString &filename);
+
+	void ReadFile(const JString &filename);
+	bool HasTags();
+	void ImportTags(MatroskaTagInfo *target);
+
+protected:
+	int64 GetDate(const std::string &dateStr);
+	JString m_AviFilename;
+	std::vector<AviTag> m_Tags;
+	iDivxTag m_DivxTag;
+};
+
+#endif // _AVI_TAG_READER_H_


Property changes on: trunk/MatroskaUtils/AviTagReader.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/CFireRoutine.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/CFireRoutine.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/CFireRoutine.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,47 +1,47 @@
-// CFireRoutine.h: interface for the CFireRoutine class.
-//
-//////////////////////////////////////////////////////////////////////
-
-#if !defined(AFX_CFIREROUTINE_H__413FF819_B711_4B5A_8EC1_580A70862BE4__I=
NCLUDED_)
-#define AFX_CFIREROUTINE_H__413FF819_B711_4B5A_8EC1_580A70862BE4__INCLUD=
ED_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-#include <Windows.h>
-
-class CFireRoutine =20
-{
-public:
-	CFireRoutine();
-	virtual ~CFireRoutine();
-
-	// Functs (public)
-
-	void InitFire();
-	void ClrHotSpots();
-	void InitPallette();
-	void SetHotSpots();
-	void Render(DWORD* pVideoMemory, int iwidth, int iheight);
-	void MakeLines();
-	unsigned char	Average(int x, int y);
-
-	// props
-	int			m_iFlameHeight;
-	int			m_iWidth;
-	int			m_iHeight;
-	int			m_iFireSource;//The y position for the lit spots
-	int			m_iFireChance;
-	int			m_iAvgFlameWidth;
-	int			m_iAlpha;
-
-	COLORREF	m_FireColors[4];
-
-	BYTE*	m_pFireBits;
-	DWORD   m_pPalletteBuffer[256];
-	long*	m_pYIndexes;
-
-
-};
-
-#endif // !defined(AFX_CFIREROUTINE_H__413FF819_B711_4B5A_8EC1_580A70862=
BE4__INCLUDED_)
+// CFireRoutine.h: interface for the CFireRoutine class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_CFIREROUTINE_H__413FF819_B711_4B5A_8EC1_580A70862BE4__I=
NCLUDED_)
+#define AFX_CFIREROUTINE_H__413FF819_B711_4B5A_8EC1_580A70862BE4__INCLUD=
ED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+#include <Windows.h>
+
+class CFireRoutine =20
+{
+public:
+	CFireRoutine();
+	virtual ~CFireRoutine();
+
+	// Functs (public)
+
+	void InitFire();
+	void ClrHotSpots();
+	void InitPallette();
+	void SetHotSpots();
+	void Render(DWORD* pVideoMemory, int iwidth, int iheight);
+	void MakeLines();
+	unsigned char	Average(int x, int y);
+
+	// props
+	int			m_iFlameHeight;
+	int			m_iWidth;
+	int			m_iHeight;
+	int			m_iFireSource;//The y position for the lit spots
+	int			m_iFireChance;
+	int			m_iAvgFlameWidth;
+	int			m_iAlpha;
+
+	COLORREF	m_FireColors[4];
+
+	BYTE*	m_pFireBits;
+	DWORD   m_pPalletteBuffer[256];
+	long*	m_pYIndexes;
+
+
+};
+
+#endif // !defined(AFX_CFIREROUTINE_H__413FF819_B711_4B5A_8EC1_580A70862=
BE4__INCLUDED_)


Property changes on: trunk/MatroskaUtils/CFireRoutine.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/DbgOut.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/DbgOut.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/DbgOut.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,89 +1,89 @@
-/**
-	*  Part of MusicBar, a plugin to control foobar2000/TCMP from the title=
bar
-	*
-	*  Copyright (C) Jory Stone - 2003
-	*
-	*
-	*  MusicBar is free software; you can redistribute it and/or modify
-	*  it under the terms of the GNU General Public License as published by
-	*  the Free Software Foundation; either version 2, or (at your option)
-	*  any later version.
-	*
-	*  MusicBar is distributed in the hope that it will be useful,
-	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	*  GNU General Public License for more details.
-	*
-	*  You should have received a copy of the GNU General Public License
-	*  along with this program; see the file COPYING.  If not, write to
-	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
-	*
-*/
-
-#ifndef _DBG_OUT_H_
-#define _DBG_OUT_H_
-
-#include <windows.h>
-
-#ifdef _DEBUG
-#define DEBUG_OUT_PUT
-#endif
-
-#ifdef DEBUG_OUT_PUT
-void WINAPI DbgStringOut(const TCHAR *pFormat,...);
-#ifdef UNICODE
-void WINAPI DbgStringOut(const CHAR *pFormat,...);
-#endif
-#define NOTE(x) DbgStringOut(x)
-#define NOTE1(x, y1) DbgStringOut(x, y1)
-#define NOTE2(x, y1, y2) DbgStringOut(x, y1, y2)
-#define NOTE3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
-#define NOTE4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
-#define NOTE5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5)
-#define NOTE6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4,=
 y5, y6)
-#define NOTE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut(=
x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#define ODS(x) DbgStringOut(x)
-#define ODS1(x, y1) DbgStringOut(x, y1)
-#define ODS2(x, y1, y2) DbgStringOut(x, y1, y2)
-#define ODS3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
-#define ODS4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
-#define ODS5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5)
-#define ODS6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4, =
y5, y6)
-#define ODS10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut(x=
, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#define TRACE(x) DbgStringOut(x)
-#define TRACE1(x, y1) DbgStringOut(x, y1)
-#define TRACE2(x, y1, y2) DbgStringOut(x, y1, y2)
-#define TRACE3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
-#define TRACE4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
-#define TRACE5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5=
)
-#define TRACE6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4=
, y5, y6)
-#define TRACE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut=
(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#else
-#define NOTE(x)
-#define NOTE1(x, y1)
-#define NOTE2(x, y1, y2)
-#define NOTE3(x, y1, y2, y3)
-#define NOTE4(x, y1, y2, y3)
-#define NOTE5(x, y1, y2, y3, y4, y5)
-#define NOTE6(x, y1, y2, y3, y4, y5, y6)
-#define NOTE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#define ODS(x)
-#define ODS1(x, y1)
-#define ODS2(x, y1, y2)
-#define ODS3(x, y1, y2, y3)
-#define ODS4(x, y1, y2, y3, y4)
-#define ODS5(x, y1, y2, y3, y4, y5)
-#define ODS6(x, y1, y2, y3, y4, y5, y6)
-#define ODS10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#define TRACE(x)
-#define TRACE1(x, y1)
-#define TRACE2(x, y1, y2)
-#define TRACE3(x, y1, y2, y3)
-#define TRACE4(x, y1, y2, y3, y4)
-#define TRACE5(x, y1, y2, y3, y4, y5)
-#define TRACE6(x, y1, y2, y3, y4, y5, y6)
-#define TRACE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#endif
-
-
-#endif // _DBG_OUT_H_
+/**
+	*  Part of MusicBar, a plugin to control foobar2000/TCMP from the title=
bar
+	*
+	*  Copyright (C) Jory Stone - 2003
+	*
+	*
+	*  MusicBar is free software; you can redistribute it and/or modify
+	*  it under the terms of the GNU General Public License as published by
+	*  the Free Software Foundation; either version 2, or (at your option)
+	*  any later version.
+	*
+	*  MusicBar is distributed in the hope that it will be useful,
+	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	*  GNU General Public License for more details.
+	*
+	*  You should have received a copy of the GNU General Public License
+	*  along with this program; see the file COPYING.  If not, write to
+	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+	*
+*/
+
+#ifndef _DBG_OUT_H_
+#define _DBG_OUT_H_
+
+#include <windows.h>
+
+#ifdef _DEBUG
+#define DEBUG_OUT_PUT
+#endif
+
+#ifdef DEBUG_OUT_PUT
+void WINAPI DbgStringOut(const TCHAR *pFormat,...);
+#ifdef UNICODE
+void WINAPI DbgStringOut(const CHAR *pFormat,...);
+#endif
+#define NOTE(x) DbgStringOut(x)
+#define NOTE1(x, y1) DbgStringOut(x, y1)
+#define NOTE2(x, y1, y2) DbgStringOut(x, y1, y2)
+#define NOTE3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
+#define NOTE4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
+#define NOTE5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5)
+#define NOTE6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4,=
 y5, y6)
+#define NOTE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut(=
x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#define ODS(x) DbgStringOut(x)
+#define ODS1(x, y1) DbgStringOut(x, y1)
+#define ODS2(x, y1, y2) DbgStringOut(x, y1, y2)
+#define ODS3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
+#define ODS4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
+#define ODS5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5)
+#define ODS6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4, =
y5, y6)
+#define ODS10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut(x=
, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#define TRACE(x) DbgStringOut(x)
+#define TRACE1(x, y1) DbgStringOut(x, y1)
+#define TRACE2(x, y1, y2) DbgStringOut(x, y1, y2)
+#define TRACE3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
+#define TRACE4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
+#define TRACE5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5=
)
+#define TRACE6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4=
, y5, y6)
+#define TRACE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut=
(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#else
+#define NOTE(x)
+#define NOTE1(x, y1)
+#define NOTE2(x, y1, y2)
+#define NOTE3(x, y1, y2, y3)
+#define NOTE4(x, y1, y2, y3)
+#define NOTE5(x, y1, y2, y3, y4, y5)
+#define NOTE6(x, y1, y2, y3, y4, y5, y6)
+#define NOTE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#define ODS(x)
+#define ODS1(x, y1)
+#define ODS2(x, y1, y2)
+#define ODS3(x, y1, y2, y3)
+#define ODS4(x, y1, y2, y3, y4)
+#define ODS5(x, y1, y2, y3, y4, y5)
+#define ODS6(x, y1, y2, y3, y4, y5, y6)
+#define ODS10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#define TRACE(x)
+#define TRACE1(x, y1)
+#define TRACE2(x, y1, y2)
+#define TRACE3(x, y1, y2, y3)
+#define TRACE4(x, y1, y2, y3, y4)
+#define TRACE5(x, y1, y2, y3, y4, y5)
+#define TRACE6(x, y1, y2, y3, y4, y5, y6)
+#define TRACE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#endif
+
+
+#endif // _DBG_OUT_H_


Property changes on: trunk/MatroskaUtils/DbgOut.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_h.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_h.h	2007-02-17 10:34:=
40 UTC (rev 1276)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_h.h	2007-02-17 10:55:=
54 UTC (rev 1277)
@@ -1,246 +1,246 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interface=
s */
-
-
- /* File created by MIDL compiler version 6.00.0361 */
-/* at Fri Mar 25 17:58:08 2005
- */
-/* Compiler settings for .\GDCMatroska.idl:
-    Oicf, W1, Zp8, env=3DWin32 (32b run)
-    protocol : dce , ms_ext, c_ext, robust
-    error checks: allocation ref bounds_check enum stub_data=20
-    VC __declspec() decoration level:=20
-         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
-         DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-//@@MIDL_FILE_HEADING(  )
-
-#pragma warning( disable: 4049 )  /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this fil=
e*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __GDCMatroska_h_h__
-#define __GDCMatroska_h_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >=3D 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */=20
-
-#ifndef __IIndexMatroska_FWD_DEFINED__
-#define __IIndexMatroska_FWD_DEFINED__
-typedef interface IIndexMatroska IIndexMatroska;
-#endif 	/* __IIndexMatroska_FWD_DEFINED__ */
-
-
-#ifndef __IndexMatroska_FWD_DEFINED__
-#define __IndexMatroska_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class IndexMatroska IndexMatroska;
-#else
-typedef struct IndexMatroska IndexMatroska;
-#endif /* __cplusplus */
-
-#endif 	/* __IndexMatroska_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "oaidl.h"
-#include "ocidl.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif=20
-
-void * __RPC_USER MIDL_user_allocate(size_t);
-void __RPC_USER MIDL_user_free( void * );=20
-
-#ifndef __IIndexMatroska_INTERFACE_DEFINED__
-#define __IIndexMatroska_INTERFACE_DEFINED__
-
-/* interface IIndexMatroska */
-/* [unique][helpstring][nonextensible][dual][uuid][object] */=20
-
-
-EXTERN_C const IID IID_IIndexMatroska;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-   =20
-    MIDL_INTERFACE("3219E2BC-E7AB-456d-AA17-600E3BDC418D")
-    IIndexMatroska : public IDispatch
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE HandleF=
ile(=20
-            BSTR full_path_to_file,
-            IDispatch *event_factory) =3D 0;
-       =20
-    };
-   =20
-#else 	/* C style interface */
-
-    typedef struct IIndexMatroskaVtbl
-    {
-        BEGIN_INTERFACE
-       =20
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
-            IIndexMatroska * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ void **ppvObject);
-       =20
-        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
-            IIndexMatroska * This);
-       =20
-        ULONG ( STDMETHODCALLTYPE *Release )(=20
-            IIndexMatroska * This);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
-            IIndexMatroska * This,
-            /* [out] */ UINT *pctinfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
-            IIndexMatroska * This,
-            /* [in] */ UINT iTInfo,
-            /* [in] */ LCID lcid,
-            /* [out] */ ITypeInfo **ppTInfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
-            IIndexMatroska * This,
-            /* [in] */ REFIID riid,
-            /* [size_is][in] */ LPOLESTR *rgszNames,
-            /* [in] */ UINT cNames,
-            /* [in] */ LCID lcid,
-            /* [size_is][out] */ DISPID *rgDispId);
-       =20
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
-            IIndexMatroska * This,
-            /* [in] */ DISPID dispIdMember,
-            /* [in] */ REFIID riid,
-            /* [in] */ LCID lcid,
-            /* [in] */ WORD wFlags,
-            /* [out][in] */ DISPPARAMS *pDispParams,
-            /* [out] */ VARIANT *pVarResult,
-            /* [out] */ EXCEPINFO *pExcepInfo,
-            /* [out] */ UINT *puArgErr);
-       =20
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *HandleFile )=
(=20
-            IIndexMatroska * This,
-            BSTR full_path_to_file,
-            IDispatch *event_factory);
-       =20
-        END_INTERFACE
-    } IIndexMatroskaVtbl;
-
-    interface IIndexMatroska
-    {
-        CONST_VTBL struct IIndexMatroskaVtbl *lpVtbl;
-    };
-
-   =20
-
-#ifdef COBJMACROS
-
-
-#define IIndexMatroska_QueryInterface(This,riid,ppvObject)	\
-    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-
-#define IIndexMatroska_AddRef(This)	\
-    (This)->lpVtbl -> AddRef(This)
-
-#define IIndexMatroska_Release(This)	\
-    (This)->lpVtbl -> Release(This)
-
-
-#define IIndexMatroska_GetTypeInfoCount(This,pctinfo)	\
-    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-
-#define IIndexMatroska_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
-    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-
-#define IIndexMatroska_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgD=
ispId)	\
-    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
-
-#define IIndexMatroska_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPa=
rams,pVarResult,pExcepInfo,puArgErr)	\
-    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
-
-
-#define IIndexMatroska_HandleFile(This,full_path_to_file,event_factory)	=
\
-    (This)->lpVtbl -> HandleFile(This,full_path_to_file,event_factory)
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IIndexMatroska_HandleFi=
le_Proxy(=20
-    IIndexMatroska * This,
-    BSTR full_path_to_file,
-    IDispatch *event_factory);
-
-
-void __RPC_STUB IIndexMatroska_HandleFile_Stub(
-    IRpcStubBuffer *This,
-    IRpcChannelBuffer *_pRpcChannelBuffer,
-    PRPC_MESSAGE _pRpcMessage,
-    DWORD *_pdwStubPhase);
-
-
-
-#endif 	/* __IIndexMatroska_INTERFACE_DEFINED__ */
-
-
-
-#ifndef __GDCMatroskaLib_LIBRARY_DEFINED__
-#define __GDCMatroskaLib_LIBRARY_DEFINED__
-
-/* library GDCMatroskaLib */
-/* [helpstring][version][uuid] */=20
-
-
-EXTERN_C const IID LIBID_GDCMatroskaLib;
-
-EXTERN_C const CLSID CLSID_IndexMatroska;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("364F941C-6DB0-437d-BBB9-22FCBA88DE30")
-IndexMatroska;
-#endif
-#endif /* __GDCMatroskaLib_LIBRARY_DEFINED__ */
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *=
, unsigned long            , BSTR * );=20
-unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned=
 char *, BSTR * );=20
-unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned=
 char *, BSTR * );=20
-void                      __RPC_USER  BSTR_UserFree(     unsigned long *=
, BSTR * );=20
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interface=
s */
+
+
+ /* File created by MIDL compiler version 6.00.0361 */
+/* at Fri Mar 25 17:58:08 2005
+ */
+/* Compiler settings for .\GDCMatroska.idl:
+    Oicf, W1, Zp8, env=3DWin32 (32b run)
+    protocol : dce , ms_ext, c_ext, robust
+    error checks: allocation ref bounds_check enum stub_data=20
+    VC __declspec() decoration level:=20
+         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+         DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+//@@MIDL_FILE_HEADING(  )
+
+#pragma warning( disable: 4049 )  /* more than 64k source lines */
+
+
+/* verify that the <rpcndr.h> version is high enough to compile this fil=
e*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of <rpcndr.h>
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __GDCMatroska_h_h__
+#define __GDCMatroska_h_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >=3D 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */=20
+
+#ifndef __IIndexMatroska_FWD_DEFINED__
+#define __IIndexMatroska_FWD_DEFINED__
+typedef interface IIndexMatroska IIndexMatroska;
+#endif 	/* __IIndexMatroska_FWD_DEFINED__ */
+
+
+#ifndef __IndexMatroska_FWD_DEFINED__
+#define __IndexMatroska_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class IndexMatroska IndexMatroska;
+#else
+typedef struct IndexMatroska IndexMatroska;
+#endif /* __cplusplus */
+
+#endif 	/* __IndexMatroska_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif=20
+
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void * );=20
+
+#ifndef __IIndexMatroska_INTERFACE_DEFINED__
+#define __IIndexMatroska_INTERFACE_DEFINED__
+
+/* interface IIndexMatroska */
+/* [unique][helpstring][nonextensible][dual][uuid][object] */=20
+
+
+EXTERN_C const IID IID_IIndexMatroska;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+   =20
+    MIDL_INTERFACE("3219E2BC-E7AB-456d-AA17-600E3BDC418D")
+    IIndexMatroska : public IDispatch
+    {
+    public:
+        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE HandleF=
ile(=20
+            BSTR full_path_to_file,
+            IDispatch *event_factory) =3D 0;
+       =20
+    };
+   =20
+#else 	/* C style interface */
+
+    typedef struct IIndexMatroskaVtbl
+    {
+        BEGIN_INTERFACE
+       =20
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
+            IIndexMatroska * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+       =20
+        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
+            IIndexMatroska * This);
+       =20
+        ULONG ( STDMETHODCALLTYPE *Release )(=20
+            IIndexMatroska * This);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
+            IIndexMatroska * This,
+            /* [out] */ UINT *pctinfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
+            IIndexMatroska * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
+            IIndexMatroska * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+       =20
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
+            IIndexMatroska * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+       =20
+        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *HandleFile )=
(=20
+            IIndexMatroska * This,
+            BSTR full_path_to_file,
+            IDispatch *event_factory);
+       =20
+        END_INTERFACE
+    } IIndexMatroskaVtbl;
+
+    interface IIndexMatroska
+    {
+        CONST_VTBL struct IIndexMatroskaVtbl *lpVtbl;
+    };
+
+   =20
+
+#ifdef COBJMACROS
+
+
+#define IIndexMatroska_QueryInterface(This,riid,ppvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IIndexMatroska_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IIndexMatroska_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IIndexMatroska_GetTypeInfoCount(This,pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IIndexMatroska_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IIndexMatroska_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgD=
ispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
+
+#define IIndexMatroska_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPa=
rams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IIndexMatroska_HandleFile(This,full_path_to_file,event_factory)	=
\
+    (This)->lpVtbl -> HandleFile(This,full_path_to_file,event_factory)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IIndexMatroska_HandleFi=
le_Proxy(=20
+    IIndexMatroska * This,
+    BSTR full_path_to_file,
+    IDispatch *event_factory);
+
+
+void __RPC_STUB IIndexMatroska_HandleFile_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IIndexMatroska_INTERFACE_DEFINED__ */
+
+
+
+#ifndef __GDCMatroskaLib_LIBRARY_DEFINED__
+#define __GDCMatroskaLib_LIBRARY_DEFINED__
+
+/* library GDCMatroskaLib */
+/* [helpstring][version][uuid] */=20
+
+
+EXTERN_C const IID LIBID_GDCMatroskaLib;
+
+EXTERN_C const CLSID CLSID_IndexMatroska;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("364F941C-6DB0-437d-BBB9-22FCBA88DE30")
+IndexMatroska;
+#endif
+#endif /* __GDCMatroskaLib_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *=
, unsigned long            , BSTR * );=20
+unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned=
 char *, BSTR * );=20
+unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned=
 char *, BSTR * );=20
+void                      __RPC_USER  BSTR_UserFree(     unsigned long *=
, BSTR * );=20
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+


Property changes on: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_h.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/GDC/GDCMatroska/MatroskaParser.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/GDC/GDCMatroska/MatroskaParser.h	2007-02-17 10:34=
:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/MatroskaParser.h	2007-02-17 10:55=
:54 UTC (rev 1277)
@@ -1,394 +1,394 @@
-/*
- * Copyright (c) 2004-2005 Mike Matsnev.  All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice immediately at the beginning of the file, without modificat=
ion,
- *    this list of conditions, and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in th=
e
- *    documentation and/or other materials provided with the distributio=
n.
- * 3. Absolutely no warranty of function or purpose is made by the autho=
r
- *    Mike Matsnev.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRAN=
TIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIME=
D.
- * IN NO EVENT SHALL THE AUTHOR 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.
- *=20
- * $Id: MatroskaParser.h,v 1.10 2005/01/10 04:52:34 mike Exp $
- *=20
- */
-
-#ifndef MATROSKA_PARSER_H
-#define	MATROSKA_PARSER_H
-
-/* Random notes:
- *
- * The parser does not process frame data in any way and does not read i=
t into
- * the queue. The app should read it via mkv_ReadData if it is intereste=
d.
- *
- * The code here is 64-bit clean and was tested on FreeBSD/sparc 64-bit =
big endian
- * system
- */
-
-#ifdef MPDLLBUILD
-#define	X __declspec(dllexport)
-#else
-#ifdef MPDLL
-#define X __declspec(dllimport)
-#pragma comment(lib,"MatroskaParser")
-#else
-#define X
-#endif
-#endif
-
-//#define MATROSKA_COMPRESSION_SUPPORT
-//#define	MATROSKA_INTEGER_ONLY
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* 64-bit integers */
-#ifdef _WIN32_WCE
-typedef signed __int64	    longlong;
-typedef unsigned __int64    ulonglong;
-#else
-typedef signed long long    longlong;
-typedef unsigned long long  ulonglong;
-#endif
-
-/* MKFLOATing point */
-#ifdef MATROSKA_INTEGER_ONLY
-typedef struct {
-  longlong	v;
-} MKFLOAT;
-#else
-typedef	double	MKFLOAT;
-#endif
-
-/* generic I/O */
-struct InputStream {
-  /* read bytes from stream */
-  int	      (*read)(struct InputStream *cc,ulonglong pos,void *buffer,in=
t count);
-  /* scan for a four byte signature, bytes must be nonzero */
-  longlong    (*scan)(struct InputStream *cc,ulonglong start,unsigned si=
gnature);
-  /* get cache size, this is used to cap readahead */
-  unsigned    (*getsize)(struct InputStream *cc);
-  /* fetch last error message */
-  const char *(*geterror)(struct InputStream *cc);
-  /* memory allocation */
-  void	      *(*memalloc)(struct InputStream *cc,size_t size);
-  void	      *(*memrealloc)(struct InputStream *cc,void *mem,size_t news=
ize);
-  void	      (*memfree)(struct InputStream *cc,void *mem);
-  // zero return causes parser to abort open
-  int	      (*progress)(struct InputStream *cc,ulonglong cur,ulonglong m=
ax);
-};
-
-typedef struct InputStream InputStream;
-
-/* matroska file */
-struct MatroskaFile; /* opaque */
-
-typedef struct MatroskaFile MatroskaFile;
-
-#define	COMP_ZLIB   0
-
-#define	TT_VIDEO    1
-#define	TT_AUDIO    2
-#define	TT_SUB	    17
-
-struct TrackInfo {
-  unsigned char	  Number;
-  unsigned char	  Type;
-  unsigned char	  TrackOverlay;
-  ulonglong	  UID;
-  ulonglong	  MinCache;
-  ulonglong	  MaxCache;
-  ulonglong	  DefaultDuration;
-  MKFLOAT	  TimecodeScale;
-  void		  *CodecPrivate;
-  unsigned	  CodecPrivateSize;
-  unsigned	  CompMethod;
-  struct {
-    unsigned int  Enabled:1;
-    unsigned int  Default:1;
-    unsigned int  Lacing:1;
-    unsigned int  DecodeAll:1;
-    unsigned int  CompEnabled:1;
-  };
-
-  union {
-    struct {
-      unsigned char   StereoMode;
-      unsigned char   DisplayUnit;
-      unsigned char   AspectRatioType;
-      unsigned int    PixelWidth;
-      unsigned int    PixelHeight;
-      unsigned int    DisplayWidth;
-      unsigned int    DisplayHeight;
-      unsigned int    ColourSpace;
-      MKFLOAT	      GammaValue;
-      struct {
-	unsigned int  Interlaced:1;
-      };
-    } Video;
-    struct {
-      MKFLOAT	      SamplingFreq;
-      MKFLOAT	      OutputSamplingFreq;
-      unsigned char   Channels;
-      unsigned char   BitDepth;
-    } Audio;
-  };
-
-  /* various strings */
-  char			*Name;
-  char			*Language;
-  char			*CodecID;
-};
-
-typedef struct TrackInfo  TrackInfo;
-
-struct SegmentInfo {
-  char			UID[16];
-  char			PrevUID[16];
-  char			NextUID[16];
-  char			*Filename;
-  char			*PrevFilename;
-  char			*NextFilename;
-  char			*Title;
-  char			*MuxingApp;
-  char			*WritingApp;
-  ulonglong		TimecodeScale;
-  ulonglong		Duration;
-  ulonglong		DateUTC;
-};
-
-typedef struct SegmentInfo SegmentInfo;
-
-struct Attachment {
-  ulonglong		Position;
-  ulonglong		Length;
-  ulonglong		UID;
-  char			*Name;
-  char			*Description;
-  char			*MimeType;
-};
-
-typedef struct Attachment Attachment;
-
-struct ChapterDisplay {
-  char			*String;
-  char			*Language;
-  char			*Country;
-};
-
-struct ChapterCommand {
-  unsigned		Time;
-  unsigned		CommandLength;
-  char			*Command;
-};
-
-struct ChapterProcess {
-  unsigned		CodecID;
-  unsigned		CodecPrivateLength;
-  char			*CodecPrivate;
-  unsigned		nCommands,nCommandsSize;
-  struct ChapterCommand	*Commands;
-};
-
-struct Chapter {
-  ulonglong		UID;
-  ulonglong		Start;
-  ulonglong		End;
-
-  unsigned		nTracks,nTracksSize;
-  ulonglong		*Tracks;
-  unsigned		nDisplay,nDisplaySize;
-  struct ChapterDisplay	*Display;
-  unsigned		nChildren,nChildrenSize;
-  struct Chapter	*Children;
-  unsigned		nProcess,nProcessSize;
-  struct ChapterProcess	*Process;
-
-  struct {
-    unsigned int	Hidden:1;
-    unsigned int	Enabled:1;
-
-    // Editions
-    unsigned int	Default:1;
-    unsigned int	Ordered:1;
-  };
-};
-
-typedef struct Chapter	Chapter;
-
-#define	TARGET_TRACK	  0
-#define	TARGET_CHAPTER	  1
-#define	TARGET_ATTACHMENT 2
-#define	TARGET_EDITION	  3
-struct Target {
-  ulonglong	    UID;
-  unsigned	    Type;
-};
-
-struct SimpleTag {
-  char		    *Name;
-  char		    *Value;
-  char		    *Language;
-  unsigned	    Default:1;
-};
-
-struct Tag {
-  unsigned	    nTargets,nTargetsSize;
-  struct Target	    *Targets;
-
-  unsigned	    nSimpleTags,nSimpleTagsSize;
-  struct SimpleTag  *SimpleTags;
-};
-
-typedef struct Tag  Tag;
-
-/* Open a matroska file
- * io pointer is recorded inside MatroskaFile
- */
-X MatroskaFile  *mkv_Open(/* in */ InputStream *io,
-			/* out */ char *err_msg,
-			/* in */  unsigned msgsize);
-
-#define	MKVF_AVOID_SEEKS    1 /* use sequential reading only */
-
-X MatroskaFile  *mkv_OpenEx(/* in */  InputStream *io,
-			  /* in */  ulonglong base,
-			  /* in */  unsigned flags,
-			  /* out */ char *err_msg,
-			  /* in */  unsigned msgsize);
-
-/* Close and deallocate mf
- * NULL pointer is ok and is simply ignored
- */
-X void		mkv_Close(/* in */ MatroskaFile *mf);
-
-/* Fetch the error message of the last failed operation */
-X const char    *mkv_GetLastError(/* in */ MatroskaFile *mf);
-
-/* Get file information */
-X SegmentInfo   *mkv_GetFileInfo(/* in */ MatroskaFile *mf);
-
-/* Get track information */
-X unsigned int  mkv_GetNumTracks(/* in */ MatroskaFile *mf);
-X TrackInfo     *mkv_GetTrackInfo(/* in */ MatroskaFile *mf,/* in */ uns=
igned track);
-
-/* chapters, tags and attachments */
-X void	      mkv_GetAttachments(/* in */   MatroskaFile *mf,
-				 /* out */  Attachment **at,
-				 /* out */  unsigned *count);
-X void	      mkv_GetChapters(/* in */	MatroskaFile *mf,
-			      /* out */	Chapter **ch,
-			      /* out */ unsigned *count);
-X void	      mkv_GetTags(/* in */  MatroskaFile *mf,
-			  /* out */ Tag **tag,
-			  /* out */ unsigned *count);
-
-X ulonglong   mkv_GetSegmentTop(MatroskaFile *mf);
-
-/* Seek to specified timecode,
- * if timecode is past end of file,
- * all tracks are set to return EOF
- * on next read
- */
-#define	MKVF_SEEK_TO_PREV_KEYFRAME  1
-
-X void	      mkv_Seek(/* in */ MatroskaFile *mf,
-		       /* in */	ulonglong timecode /* in ns */,
-		       /* in */ unsigned flags);
-
-X void	      mkv_SkipToKeyframe(MatroskaFile *mf);
-
-X ulonglong   mkv_GetLowestQTimecode(MatroskaFile *mf);
-
-X int	      mkv_TruncFloat(MKFLOAT f);
-
-/***********************************************************************=
**
- * reading data, pull model
- */
-
-/* frame flags */
-#define	FRAME_KF	      0x00000001
-#define	FRAME_UNKNOWN_START   0x00000002
-#define	FRAME_UNKNOWN_END     0x00000004
-#define	FRAME_GAP	      0x00000008
-
-/* This sets the masking flags for the parser,
- *  masked tracks [with 1s in their bit positions]
- *  will be ignored when reading file data.
- * This call discards all parsed and queued frames
- */
-X void	      mkv_SetTrackMask(/* in */ MatroskaFile *mf,/* in */ unsigne=
d int mask);
-
-/* Read one frame from the queue.
- * mask specifies what tracks to ignore.
- * Returns -1 if there are no more frames in the specified
- * set of tracks, 0 on success
- */
-X int	      mkv_ReadFrame(/* in */  MatroskaFile *mf,
-			    /* in */  unsigned int mask,
-			    /* out */ unsigned int *track,
-			    /* out */ ulonglong *StartTime /* in ns */,
-			    /* out */ ulonglong *EndTime /* in ns */,
-			    /* out */ ulonglong *FilePos /* in bytes from start of file */,
-			    /* out */ unsigned int *FrameSize /* in bytes */,
-			    /* out */ unsigned int *FrameFlags);
-
-/* Read raw frame data, invokes underlying io methods,
- * but keeps track of the file pointer for internal buffering.
- * Returns the -1 if error occurred, or 0 on success
- */
-X int	      mkv_ReadData(/* in */   MatroskaFile *mf,
-			   /* in */   ulonglong FilePos,
-			   /* out */  void *Buffer,
-			   /* in */   unsigned int Count);
-
-#ifdef MATROSKA_COMPRESSION_SUPPORT
-/* Compressed streams support */
-struct CompressedStream;
-
-typedef struct CompressedStream CompressedStream;
-
-X CompressedStream  *cs_Create(/* in */	MatroskaFile *mf,
-			     /* in */	unsigned tracknum,
-			     /* out */	char *errormsg,
-			     /* in */	unsigned msgsize);
-X void		  cs_Destroy(/* in */ CompressedStream *cs);
-
-/* advance to the next frame in matroska stream, you need to pass values=
 returned
- * by mkv_ReadFrame */
-X void		  cs_NextFrame(/* in */ CompressedStream *cs,
-			       /* in */ ulonglong pos,
-			       /* in */ unsigned size);
-
-/* read and decode more data from current frame, return number of bytes =
decoded,
- * 0 on end of frame, or -1 on error */
-X int		  cs_ReadData(CompressedStream *cs,char *buffer,unsigned bufsize)=
;
-
-/* return error message for the last error */
-X const char	  *cs_GetLastError(CompressedStream *cs);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#undef X
-
-#endif
+/*
+ * Copyright (c) 2004-2005 Mike Matsnev.  All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modificat=
ion,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in th=
e
+ *    documentation and/or other materials provided with the distributio=
n.
+ * 3. Absolutely no warranty of function or purpose is made by the autho=
r
+ *    Mike Matsnev.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRAN=
TIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIME=
D.
+ * IN NO EVENT SHALL THE AUTHOR 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.
+ *=20
+ * $Id: MatroskaParser.h,v 1.10 2005/01/10 04:52:34 mike Exp $
+ *=20
+ */
+
+#ifndef MATROSKA_PARSER_H
+#define	MATROSKA_PARSER_H
+
+/* Random notes:
+ *
+ * The parser does not process frame data in any way and does not read i=
t into
+ * the queue. The app should read it via mkv_ReadData if it is intereste=
d.
+ *
+ * The code here is 64-bit clean and was tested on FreeBSD/sparc 64-bit =
big endian
+ * system
+ */
+
+#ifdef MPDLLBUILD
+#define	X __declspec(dllexport)
+#else
+#ifdef MPDLL
+#define X __declspec(dllimport)
+#pragma comment(lib,"MatroskaParser")
+#else
+#define X
+#endif
+#endif
+
+//#define MATROSKA_COMPRESSION_SUPPORT
+//#define	MATROSKA_INTEGER_ONLY
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* 64-bit integers */
+#ifdef _WIN32_WCE
+typedef signed __int64	    longlong;
+typedef unsigned __int64    ulonglong;
+#else
+typedef signed long long    longlong;
+typedef unsigned long long  ulonglong;
+#endif
+
+/* MKFLOATing point */
+#ifdef MATROSKA_INTEGER_ONLY
+typedef struct {
+  longlong	v;
+} MKFLOAT;
+#else
+typedef	double	MKFLOAT;
+#endif
+
+/* generic I/O */
+struct InputStream {
+  /* read bytes from stream */
+  int	      (*read)(struct InputStream *cc,ulonglong pos,void *buffer,in=
t count);
+  /* scan for a four byte signature, bytes must be nonzero */
+  longlong    (*scan)(struct InputStream *cc,ulonglong start,unsigned si=
gnature);
+  /* get cache size, this is used to cap readahead */
+  unsigned    (*getsize)(struct InputStream *cc);
+  /* fetch last error message */
+  const char *(*geterror)(struct InputStream *cc);
+  /* memory allocation */
+  void	      *(*memalloc)(struct InputStream *cc,size_t size);
+  void	      *(*memrealloc)(struct InputStream *cc,void *mem,size_t news=
ize);
+  void	      (*memfree)(struct InputStream *cc,void *mem);
+  // zero return causes parser to abort open
+  int	      (*progress)(struct InputStream *cc,ulonglong cur,ulonglong m=
ax);
+};
+
+typedef struct InputStream InputStream;
+
+/* matroska file */
+struct MatroskaFile; /* opaque */
+
+typedef struct MatroskaFile MatroskaFile;
+
+#define	COMP_ZLIB   0
+
+#define	TT_VIDEO    1
+#define	TT_AUDIO    2
+#define	TT_SUB	    17
+
+struct TrackInfo {
+  unsigned char	  Number;
+  unsigned char	  Type;
+  unsigned char	  TrackOverlay;
+  ulonglong	  UID;
+  ulonglong	  MinCache;
+  ulonglong	  MaxCache;
+  ulonglong	  DefaultDuration;
+  MKFLOAT	  TimecodeScale;
+  void		  *CodecPrivate;
+  unsigned	  CodecPrivateSize;
+  unsigned	  CompMethod;
+  struct {
+    unsigned int  Enabled:1;
+    unsigned int  Default:1;
+    unsigned int  Lacing:1;
+    unsigned int  DecodeAll:1;
+    unsigned int  CompEnabled:1;
+  };
+
+  union {
+    struct {
+      unsigned char   StereoMode;
+      unsigned char   DisplayUnit;
+      unsigned char   AspectRatioType;
+      unsigned int    PixelWidth;
+      unsigned int    PixelHeight;
+      unsigned int    DisplayWidth;
+      unsigned int    DisplayHeight;
+      unsigned int    ColourSpace;
+      MKFLOAT	      GammaValue;
+      struct {
+	unsigned int  Interlaced:1;
+      };
+    } Video;
+    struct {
+      MKFLOAT	      SamplingFreq;
+      MKFLOAT	      OutputSamplingFreq;
+      unsigned char   Channels;
+      unsigned char   BitDepth;
+    } Audio;
+  };
+
+  /* various strings */
+  char			*Name;
+  char			*Language;
+  char			*CodecID;
+};
+
+typedef struct TrackInfo  TrackInfo;
+
+struct SegmentInfo {
+  char			UID[16];
+  char			PrevUID[16];
+  char			NextUID[16];
+  char			*Filename;
+  char			*PrevFilename;
+  char			*NextFilename;
+  char			*Title;
+  char			*MuxingApp;
+  char			*WritingApp;
+  ulonglong		TimecodeScale;
+  ulonglong		Duration;
+  ulonglong		DateUTC;
+};
+
+typedef struct SegmentInfo SegmentInfo;
+
+struct Attachment {
+  ulonglong		Position;
+  ulonglong		Length;
+  ulonglong		UID;
+  char			*Name;
+  char			*Description;
+  char			*MimeType;
+};
+
+typedef struct Attachment Attachment;
+
+struct ChapterDisplay {
+  char			*String;
+  char			*Language;
+  char			*Country;
+};
+
+struct ChapterCommand {
+  unsigned		Time;
+  unsigned		CommandLength;
+  char			*Command;
+};
+
+struct ChapterProcess {
+  unsigned		CodecID;
+  unsigned		CodecPrivateLength;
+  char			*CodecPrivate;
+  unsigned		nCommands,nCommandsSize;
+  struct ChapterCommand	*Commands;
+};
+
+struct Chapter {
+  ulonglong		UID;
+  ulonglong		Start;
+  ulonglong		End;
+
+  unsigned		nTracks,nTracksSize;
+  ulonglong		*Tracks;
+  unsigned		nDisplay,nDisplaySize;
+  struct ChapterDisplay	*Display;
+  unsigned		nChildren,nChildrenSize;
+  struct Chapter	*Children;
+  unsigned		nProcess,nProcessSize;
+  struct ChapterProcess	*Process;
+
+  struct {
+    unsigned int	Hidden:1;
+    unsigned int	Enabled:1;
+
+    // Editions
+    unsigned int	Default:1;
+    unsigned int	Ordered:1;
+  };
+};
+
+typedef struct Chapter	Chapter;
+
+#define	TARGET_TRACK	  0
+#define	TARGET_CHAPTER	  1
+#define	TARGET_ATTACHMENT 2
+#define	TARGET_EDITION	  3
+struct Target {
+  ulonglong	    UID;
+  unsigned	    Type;
+};
+
+struct SimpleTag {
+  char		    *Name;
+  char		    *Value;
+  char		    *Language;
+  unsigned	    Default:1;
+};
+
+struct Tag {
+  unsigned	    nTargets,nTargetsSize;
+  struct Target	    *Targets;
+
+  unsigned	    nSimpleTags,nSimpleTagsSize;
+  struct SimpleTag  *SimpleTags;
+};
+
+typedef struct Tag  Tag;
+
+/* Open a matroska file
+ * io pointer is recorded inside MatroskaFile
+ */
+X MatroskaFile  *mkv_Open(/* in */ InputStream *io,
+			/* out */ char *err_msg,
+			/* in */  unsigned msgsize);
+
+#define	MKVF_AVOID_SEEKS    1 /* use sequential reading only */
+
+X MatroskaFile  *mkv_OpenEx(/* in */  InputStream *io,
+			  /* in */  ulonglong base,
+			  /* in */  unsigned flags,
+			  /* out */ char *err_msg,
+			  /* in */  unsigned msgsize);
+
+/* Close and deallocate mf
+ * NULL pointer is ok and is simply ignored
+ */
+X void		mkv_Close(/* in */ MatroskaFile *mf);
+
+/* Fetch the error message of the last failed operation */
+X const char    *mkv_GetLastError(/* in */ MatroskaFile *mf);
+
+/* Get file information */
+X SegmentInfo   *mkv_GetFileInfo(/* in */ MatroskaFile *mf);
+
+/* Get track information */
+X unsigned int  mkv_GetNumTracks(/* in */ MatroskaFile *mf);
+X TrackInfo     *mkv_GetTrackInfo(/* in */ MatroskaFile *mf,/* in */ uns=
igned track);
+
+/* chapters, tags and attachments */
+X void	      mkv_GetAttachments(/* in */   MatroskaFile *mf,
+				 /* out */  Attachment **at,
+				 /* out */  unsigned *count);
+X void	      mkv_GetChapters(/* in */	MatroskaFile *mf,
+			      /* out */	Chapter **ch,
+			      /* out */ unsigned *count);
+X void	      mkv_GetTags(/* in */  MatroskaFile *mf,
+			  /* out */ Tag **tag,
+			  /* out */ unsigned *count);
+
+X ulonglong   mkv_GetSegmentTop(MatroskaFile *mf);
+
+/* Seek to specified timecode,
+ * if timecode is past end of file,
+ * all tracks are set to return EOF
+ * on next read
+ */
+#define	MKVF_SEEK_TO_PREV_KEYFRAME  1
+
+X void	      mkv_Seek(/* in */ MatroskaFile *mf,
+		       /* in */	ulonglong timecode /* in ns */,
+		       /* in */ unsigned flags);
+
+X void	      mkv_SkipToKeyframe(MatroskaFile *mf);
+
+X ulonglong   mkv_GetLowestQTimecode(MatroskaFile *mf);
+
+X int	      mkv_TruncFloat(MKFLOAT f);
+
+/***********************************************************************=
**
+ * reading data, pull model
+ */
+
+/* frame flags */
+#define	FRAME_KF	      0x00000001
+#define	FRAME_UNKNOWN_START   0x00000002
+#define	FRAME_UNKNOWN_END     0x00000004
+#define	FRAME_GAP	      0x00000008
+
+/* This sets the masking flags for the parser,
+ *  masked tracks [with 1s in their bit positions]
+ *  will be ignored when reading file data.
+ * This call discards all parsed and queued frames
+ */
+X void	      mkv_SetTrackMask(/* in */ MatroskaFile *mf,/* in */ unsigne=
d int mask);
+
+/* Read one frame from the queue.
+ * mask specifies what tracks to ignore.
+ * Returns -1 if there are no more frames in the specified
+ * set of tracks, 0 on success
+ */
+X int	      mkv_ReadFrame(/* in */  MatroskaFile *mf,
+			    /* in */  unsigned int mask,
+			    /* out */ unsigned int *track,
+			    /* out */ ulonglong *StartTime /* in ns */,
+			    /* out */ ulonglong *EndTime /* in ns */,
+			    /* out */ ulonglong *FilePos /* in bytes from start of file */,
+			    /* out */ unsigned int *FrameSize /* in bytes */,
+			    /* out */ unsigned int *FrameFlags);
+
+/* Read raw frame data, invokes underlying io methods,
+ * but keeps track of the file pointer for internal buffering.
+ * Returns the -1 if error occurred, or 0 on success
+ */
+X int	      mkv_ReadData(/* in */   MatroskaFile *mf,
+			   /* in */   ulonglong FilePos,
+			   /* out */  void *Buffer,
+			   /* in */   unsigned int Count);
+
+#ifdef MATROSKA_COMPRESSION_SUPPORT
+/* Compressed streams support */
+struct CompressedStream;
+
+typedef struct CompressedStream CompressedStream;
+
+X CompressedStream  *cs_Create(/* in */	MatroskaFile *mf,
+			     /* in */	unsigned tracknum,
+			     /* out */	char *errormsg,
+			     /* in */	unsigned msgsize);
+X void		  cs_Destroy(/* in */ CompressedStream *cs);
+
+/* advance to the next frame in matroska stream, you need to pass values=
 returned
+ * by mkv_ReadFrame */
+X void		  cs_NextFrame(/* in */ CompressedStream *cs,
+			       /* in */ ulonglong pos,
+			       /* in */ unsigned size);
+
+/* read and decode more data from current frame, return number of bytes =
decoded,
+ * 0 on end of frame, or -1 on error */
+X int		  cs_ReadData(CompressedStream *cs,char *buffer,unsigned bufsize)=
;
+
+/* return error message for the last error */
+X const char	  *cs_GetLastError(CompressedStream *cs);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef X
+
+#endif


Property changes on: trunk/MatroskaUtils/GDC/GDCMatroska/MatroskaParser.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/GDC/GDCMatroska/Win32Stream.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/GDC/GDCMatroska/Win32Stream.h	2007-02-17 10:34:40=
 UTC (rev 1276)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/Win32Stream.h	2007-02-17 10:55:54=
 UTC (rev 1277)
@@ -1,29 +1,29 @@
-#ifndef _WIN32_STREAM_H_
-#define _WIN32_STREAM_H_
-
-#include <windows.h>
-#include "MatroskaParser.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct Win32Stream {
-  struct InputStream  base;
-  HANDLE fp;
-  int error;
-};
-typedef struct Win32Stream Win32Stream;
-
-// Helper methods
-void Win32Stream_Init(Win32Stream *st);
-int Win32Stream_Open(Win32Stream *st, const char *filename);
-int Win32Stream_OpenA(Win32Stream *st, const char *filename);
-int Win32Stream_OpenW(Win32Stream *st, const wchar_t *filename);
-void Win32Stream_Close(Win32Stream *st);
-
-#ifdef __cplusplus
-}
-#endif
-
+#ifndef _WIN32_STREAM_H_
+#define _WIN32_STREAM_H_
+
+#include <windows.h>
+#include "MatroskaParser.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct Win32Stream {
+  struct InputStream  base;
+  HANDLE fp;
+  int error;
+};
+typedef struct Win32Stream Win32Stream;
+
+// Helper methods
+void Win32Stream_Init(Win32Stream *st);
+int Win32Stream_Open(Win32Stream *st, const char *filename);
+int Win32Stream_OpenA(Win32Stream *st, const char *filename);
+int Win32Stream_OpenW(Win32Stream *st, const wchar_t *filename);
+void Win32Stream_Close(Win32Stream *st);
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif // _WIN32_STREAM_H_
\ No newline at end of file


Property changes on: trunk/MatroskaUtils/GDC/GDCMatroska/Win32Stream.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/MatroskaUtils/GDC/GDCMatroska/resource.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.h	2007-02-17 10:34:40 UTC =
(rev 1276)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.h	2007-02-17 10:55:54 UTC =
(rev 1277)
@@ -1,43 +1,43 @@
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently, but
-// are changed infrequently
-//
-
-#pragma once
-
-
-// Modify the following defines if you have to target a platform prior t=
o the ones specified below.
-// Refer to MSDN for the latest info on corresponding values for differe=
nt platforms.
-#ifndef WINVER				// Allow use of features specific to Windows 95 and Wi=
ndows NT 4 or later.
-#define WINVER 0x0400		// Change this to the appropriate value to target=
 Windows 98 and Windows 2000 or later.
-#endif
-
-#ifndef _WIN32_WINNT		// Allow use of features specific to Windows NT 4 =
or later.
-#define _WIN32_WINNT 0x0400	// Change this to the appropriate value to t=
arget Windows 2000 or later.
-#endif					=09
-
-#ifndef _WIN32_WINDOWS		// Allow use of features specific to Windows 98 =
or later.
-#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to=
 target Windows Me or later.
-#endif
-
-#ifndef _WIN32_IE			// Allow use of features specific to IE 4.0 or later=
.
-#define _WIN32_IE 0x0400	// Change this to the appropriate value to targ=
et IE 5.0 or later.
-#endif
-
-#define _ATL_APARTMENT_THREADED
-#define _ATL_NO_AUTOMATIC_NAMESPACE
-
-//#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructor=
s will be explicit
-
-// turns off ATL's hiding of some common and often safely ignored warnin=
g messages
-#define _ATL_ALL_WARNINGS
-
-
-#include "resource.h"
-#include <atlbase.h>
-#include <atlcom.h>
-
-#include "../common/GoogleDesktopSearchAPI.h"
-#include "../common/GoogleDesktopComponentRegistration.h"
-
-using namespace ATL;
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+
+// Modify the following defines if you have to target a platform prior t=
o the ones specified below.
+// Refer to MSDN for the latest info on corresponding values for differe=
nt platforms.
+#ifndef WINVER				// Allow use of features specific to Windows 95 and Wi=
ndows NT 4 or later.
+#define WINVER 0x0400		// Change this to the appropriate value to target=
 Windows 98 and Windows 2000 or later.
+#endif
+
+#ifndef _WIN32_WINNT		// Allow use of features specific to Windows NT 4 =
or later.
+#define _WIN32_WINNT 0x0400	// Change this to the appropriate value to t=
arget Windows 2000 or later.
+#endif					=09
+
+#ifndef _WIN32_WINDOWS		// Allow use of features specific to Windows 98 =
or later.
+#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to=
 target Windows Me or later.
+#endif
+
+#ifndef _WIN32_IE			// Allow use of features specific to IE 4.0 or later=
.
+#define _WIN32_IE 0x0400	// Change this to the appropriate value to targ=
et IE 5.0 or later.
+#endif
+
+#define _ATL_APARTMENT_THREADED
+#define _ATL_NO_AUTOMATIC_NAMESPACE
+
+//#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructor=
s will be explicit
+
+// turns off ATL's hiding of some common and often safely ignored warnin=
g messages
+#define _ATL_ALL_WARNINGS
+
+
+#include "resource.h"
+#include <atlbase.h>
+#include <atlcom.h>
+
+#include "../common/GoogleDesktopSearchAPI.h"
+#include "../common/GoogleDesktopComponentRegistration.h"
+
+using namespace ATL;


Property changes on: trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/MatroskaUtils/GDC/common/GoogleDesktopComponen=
tRegistration.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.h	2007-02-17 10=
:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.h	2007-02-17 10=
:55:54 UTC (rev 1277)
@@ -1,891 +1,891 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interface=
s */
-
-
- /* File created by MIDL compiler version 6.00.0361 */
-/* at Fri Mar 25 17:57:54 2005
- */
-/* Compiler settings for .\GoogleDesktopSearchAPI.idl:
-    Oicf, W1, Zp8, env=3DWin32 (32b run)
-    protocol : dce , ms_ext, c_ext, robust
-    error checks: allocation ref bounds_check enum stub_data=20
-    VC __declspec() decoration level:=20
-         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
-         DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-//@@MIDL_FILE_HEADING(  )
-
-#pragma warning( disable: 4049 )  /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this fil=
e*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __GoogleDesktopSearchAPI_h__
-#define __GoogleDesktopSearchAPI_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >=3D 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */=20
-
-#ifndef __IGoogleDesktopSearchComponentRegistration_FWD_DEFINED__
-#define __IGoogleDesktopSearchComponentRegistration_FWD_DEFINED__
-typedef interface IGoogleDesktopSearchComponentRegistration IGoogleDeskt=
opSearchComponentRegistration;
-#endif 	/* __IGoogleDesktopSearchComponentRegistration_FWD_DEFINED__ */
-
-
-#ifndef __IGoogleDesktopSearchComponentRegister_FWD_DEFINED__
-#define __IGoogleDesktopSearchComponentRegister_FWD_DEFINED__
-typedef interface IGoogleDesktopSearchComponentRegister IGoogleDesktopSe=
archComponentRegister;
-#endif 	/* __IGoogleDesktopSearchComponentRegister_FWD_DEFINED__ */
-
-
-#ifndef __IGoogleDesktopSearchEvent_FWD_DEFINED__
-#define __IGoogleDesktopSearchEvent_FWD_DEFINED__
-typedef interface IGoogleDesktopSearchEvent IGoogleDesktopSearchEvent;
-#endif 	/* __IGoogleDesktopSearchEvent_FWD_DEFINED__ */
-
-
-#ifndef __IGoogleDesktopSearchEventFactory_FWD_DEFINED__
-#define __IGoogleDesktopSearchEventFactory_FWD_DEFINED__
-typedef interface IGoogleDesktopSearchEventFactory IGoogleDesktopSearchE=
ventFactory;
-#endif 	/* __IGoogleDesktopSearchEventFactory_FWD_DEFINED__ */
-
-
-#ifndef __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
-#define __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
-typedef interface DGoogleDesktopSearchFileNotify DGoogleDesktopSearchFil=
eNotify;
-#endif 	/* __DGoogleDesktopSearchFileNotify_FWD_DEFINED__ */
-
-
-#ifndef __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
-#define __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
-typedef interface DGoogleDesktopSearchFileNotify DGoogleDesktopSearchFil=
eNotify;
-#endif 	/* __DGoogleDesktopSearchFileNotify_FWD_DEFINED__ */
-
-
-#ifndef __IGoogleDesktopSearchEvent_FWD_DEFINED__
-#define __IGoogleDesktopSearchEvent_FWD_DEFINED__
-typedef interface IGoogleDesktopSearchEvent IGoogleDesktopSearchEvent;
-#endif 	/* __IGoogleDesktopSearchEvent_FWD_DEFINED__ */
-
-
-#ifndef __GoogleDesktopSearch_FWD_DEFINED__
-#define __GoogleDesktopSearch_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class GoogleDesktopSearch GoogleDesktopSearch;
-#else
-typedef struct GoogleDesktopSearch GoogleDesktopSearch;
-#endif /* __cplusplus */
-
-#endif 	/* __GoogleDesktopSearch_FWD_DEFINED__ */
-
-
-#ifndef __GoogleDesktopSearchRegister_FWD_DEFINED__
-#define __GoogleDesktopSearchRegister_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class GoogleDesktopSearchRegister GoogleDesktopSearchRegister;
-#else
-typedef struct GoogleDesktopSearchRegister GoogleDesktopSearchRegister;
-#endif /* __cplusplus */
-
-#endif 	/* __GoogleDesktopSearchRegister_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "oaidl.h"
-#include "ocidl.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif=20
-
-void * __RPC_USER MIDL_user_allocate(size_t);
-void __RPC_USER MIDL_user_free( void * );=20
-
-/* interface __MIDL_itf_GoogleDesktopSearchAPI_0000 */
-/* [local] */=20
-
-#include <winerror.h>
-#define E_EXTENSION_REGISTERED           MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0001)
-#define E_COMPONENT_NOT_REGISTERED       MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0002)
-#define E_NO_SUCH_SCHEMA                 MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0003)
-#define E_NO_SUCH_PROPERTY               MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0004)
-#define E_COMPONENT_DISABLED             MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0005)
-#define E_COMPONENT_ALREADY_REGISTERED   MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0006)
-#define S_INDEXING_PAUSED                MAKE_HRESULT(SEVERITY_SUCCESS, =
FACILITY_ITF, 0x0007)
-#define E_EVENT_TOO_LARGE                MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0008)
-#define E_SERVICE_NOT_RUNNING            MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0009)
-#define E_INVALID_EVENT_FLAGS            MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x000A)
-
-
-extern RPC_IF_HANDLE __MIDL_itf_GoogleDesktopSearchAPI_0000_v0_0_c_ifspe=
c;
-extern RPC_IF_HANDLE __MIDL_itf_GoogleDesktopSearchAPI_0000_v0_0_s_ifspe=
c;
-
-#ifndef __IGoogleDesktopSearchComponentRegistration_INTERFACE_DEFINED__
-#define __IGoogleDesktopSearchComponentRegistration_INTERFACE_DEFINED__
-
-/* interface IGoogleDesktopSearchComponentRegistration */
-/* [unique][oleautomation][dual][uuid][object] */=20
-
-
-EXTERN_C const IID IID_IGoogleDesktopSearchComponentRegistration;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-   =20
-    MIDL_INTERFACE("151857B2-26E0-4f4d-ACED-4F7E4B2065EF")
-    IGoogleDesktopSearchComponentRegistration : public IDispatch
-    {
-    public:
-        virtual /* [id] */ HRESULT STDMETHODCALLTYPE RegisterExtension(=20
-            /* [in] */ BSTR extension_handled) =3D 0;
-       =20
-    };
-   =20
-#else 	/* C style interface */
-
-    typedef struct IGoogleDesktopSearchComponentRegistrationVtbl
-    {
-        BEGIN_INTERFACE
-       =20
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
-            IGoogleDesktopSearchComponentRegistration * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ void **ppvObject);
-       =20
-        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
-            IGoogleDesktopSearchComponentRegistration * This);
-       =20
-        ULONG ( STDMETHODCALLTYPE *Release )(=20
-            IGoogleDesktopSearchComponentRegistration * This);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
-            IGoogleDesktopSearchComponentRegistration * This,
-            /* [out] */ UINT *pctinfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
-            IGoogleDesktopSearchComponentRegistration * This,
-            /* [in] */ UINT iTInfo,
-            /* [in] */ LCID lcid,
-            /* [out] */ ITypeInfo **ppTInfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
-            IGoogleDesktopSearchComponentRegistration * This,
-            /* [in] */ REFIID riid,
-            /* [size_is][in] */ LPOLESTR *rgszNames,
-            /* [in] */ UINT cNames,
-            /* [in] */ LCID lcid,
-            /* [size_is][out] */ DISPID *rgDispId);
-       =20
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
-            IGoogleDesktopSearchComponentRegistration * This,
-            /* [in] */ DISPID dispIdMember,
-            /* [in] */ REFIID riid,
-            /* [in] */ LCID lcid,
-            /* [in] */ WORD wFlags,
-            /* [out][in] */ DISPPARAMS *pDispParams,
-            /* [out] */ VARIANT *pVarResult,
-            /* [out] */ EXCEPINFO *pExcepInfo,
-            /* [out] */ UINT *puArgErr);
-       =20
-        /* [id] */ HRESULT ( STDMETHODCALLTYPE *RegisterExtension )(=20
-            IGoogleDesktopSearchComponentRegistration * This,
-            /* [in] */ BSTR extension_handled);
-       =20
-        END_INTERFACE
-    } IGoogleDesktopSearchComponentRegistrationVtbl;
-
-    interface IGoogleDesktopSearchComponentRegistration
-    {
-        CONST_VTBL struct IGoogleDesktopSearchComponentRegistrationVtbl =
*lpVtbl;
-    };
-
-   =20
-
-#ifdef COBJMACROS
-
-
-#define IGoogleDesktopSearchComponentRegistration_QueryInterface(This,ri=
id,ppvObject)	\
-    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-
-#define IGoogleDesktopSearchComponentRegistration_AddRef(This)	\
-    (This)->lpVtbl -> AddRef(This)
-
-#define IGoogleDesktopSearchComponentRegistration_Release(This)	\
-    (This)->lpVtbl -> Release(This)
-
-
-#define IGoogleDesktopSearchComponentRegistration_GetTypeInfoCount(This,=
pctinfo)	\
-    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-
-#define IGoogleDesktopSearchComponentRegistration_GetTypeInfo(This,iTInf=
o,lcid,ppTInfo)	\
-    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-
-#define IGoogleDesktopSearchComponentRegistration_GetIDsOfNames(This,rii=
d,rgszNames,cNames,lcid,rgDispId)	\
-    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
-
-#define IGoogleDesktopSearchComponentRegistration_Invoke(This,dispIdMemb=
er,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
-    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
-
-
-#define IGoogleDesktopSearchComponentRegistration_RegisterExtension(This=
,extension_handled)	\
-    (This)->lpVtbl -> RegisterExtension(This,extension_handled)
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchComponentRegist=
ration_RegisterExtension_Proxy(=20
-    IGoogleDesktopSearchComponentRegistration * This,
-    /* [in] */ BSTR extension_handled);
-
-
-void __RPC_STUB IGoogleDesktopSearchComponentRegistration_RegisterExtens=
ion_Stub(
-    IRpcStubBuffer *This,
-    IRpcChannelBuffer *_pRpcChannelBuffer,
-    PRPC_MESSAGE _pRpcMessage,
-    DWORD *_pdwStubPhase);
-
-
-
-#endif 	/* __IGoogleDesktopSearchComponentRegistration_INTERFACE_DEFINED=
__ */
-
-
-#ifndef __IGoogleDesktopSearchComponentRegister_INTERFACE_DEFINED__
-#define __IGoogleDesktopSearchComponentRegister_INTERFACE_DEFINED__
-
-/* interface IGoogleDesktopSearchComponentRegister */
-/* [unique][oleautomation][dual][uuid][object] */=20
-
-
-EXTERN_C const IID IID_IGoogleDesktopSearchComponentRegister;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-   =20
-    MIDL_INTERFACE("9B311E80-BC95-4518-A58C-446EC9A082B5")
-    IGoogleDesktopSearchComponentRegister : public IDispatch
-    {
-    public:
-        virtual /* [id] */ HRESULT STDMETHODCALLTYPE RegisterComponent(=20
-            /* [in] */ BSTR component_guid_or_progid,
-            /* [in] */ VARIANT component_description,
-            /* [retval][out] */ IGoogleDesktopSearchComponentRegistratio=
n **registration) =3D 0;
-       =20
-        virtual /* [id] */ HRESULT STDMETHODCALLTYPE UnregisterComponent=
(=20
-            /* [in] */ BSTR component_guid_or_progid) =3D 0;
-       =20
-    };
-   =20
-#else 	/* C style interface */
-
-    typedef struct IGoogleDesktopSearchComponentRegisterVtbl
-    {
-        BEGIN_INTERFACE
-       =20
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
-            IGoogleDesktopSearchComponentRegister * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ void **ppvObject);
-       =20
-        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
-            IGoogleDesktopSearchComponentRegister * This);
-       =20
-        ULONG ( STDMETHODCALLTYPE *Release )(=20
-            IGoogleDesktopSearchComponentRegister * This);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
-            IGoogleDesktopSearchComponentRegister * This,
-            /* [out] */ UINT *pctinfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
-            IGoogleDesktopSearchComponentRegister * This,
-            /* [in] */ UINT iTInfo,
-            /* [in] */ LCID lcid,
-            /* [out] */ ITypeInfo **ppTInfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
-            IGoogleDesktopSearchComponentRegister * This,
-            /* [in] */ REFIID riid,
-            /* [size_is][in] */ LPOLESTR *rgszNames,
-            /* [in] */ UINT cNames,
-            /* [in] */ LCID lcid,
-            /* [size_is][out] */ DISPID *rgDispId);
-       =20
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
-            IGoogleDesktopSearchComponentRegister * This,
-            /* [in] */ DISPID dispIdMember,
-            /* [in] */ REFIID riid,
-            /* [in] */ LCID lcid,
-            /* [in] */ WORD wFlags,
-            /* [out][in] */ DISPPARAMS *pDispParams,
-            /* [out] */ VARIANT *pVarResult,
-            /* [out] */ EXCEPINFO *pExcepInfo,
-            /* [out] */ UINT *puArgErr);
-       =20
-        /* [id] */ HRESULT ( STDMETHODCALLTYPE *RegisterComponent )(=20
-            IGoogleDesktopSearchComponentRegister * This,
-            /* [in] */ BSTR component_guid_or_progid,
-            /* [in] */ VARIANT component_description,
-            /* [retval][out] */ IGoogleDesktopSearchComponentRegistratio=
n **registration);
-       =20
-        /* [id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterComponent )(=20
-            IGoogleDesktopSearchComponentRegister * This,
-            /* [in] */ BSTR component_guid_or_progid);
-       =20
-        END_INTERFACE
-    } IGoogleDesktopSearchComponentRegisterVtbl;
-
-    interface IGoogleDesktopSearchComponentRegister
-    {
-        CONST_VTBL struct IGoogleDesktopSearchComponentRegisterVtbl *lpV=
tbl;
-    };
-
-   =20
-
-#ifdef COBJMACROS
-
-
-#define IGoogleDesktopSearchComponentRegister_QueryInterface(This,riid,p=
pvObject)	\
-    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-
-#define IGoogleDesktopSearchComponentRegister_AddRef(This)	\
-    (This)->lpVtbl -> AddRef(This)
-
-#define IGoogleDesktopSearchComponentRegister_Release(This)	\
-    (This)->lpVtbl -> Release(This)
-
-
-#define IGoogleDesktopSearchComponentRegister_GetTypeInfoCount(This,pcti=
nfo)	\
-    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-
-#define IGoogleDesktopSearchComponentRegister_GetTypeInfo(This,iTInfo,lc=
id,ppTInfo)	\
-    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-
-#define IGoogleDesktopSearchComponentRegister_GetIDsOfNames(This,riid,rg=
szNames,cNames,lcid,rgDispId)	\
-    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
-
-#define IGoogleDesktopSearchComponentRegister_Invoke(This,dispIdMember,r=
iid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
-    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
-
-
-#define IGoogleDesktopSearchComponentRegister_RegisterComponent(This,com=
ponent_guid_or_progid,component_description,registration)	\
-    (This)->lpVtbl -> RegisterComponent(This,component_guid_or_progid,co=
mponent_description,registration)
-
-#define IGoogleDesktopSearchComponentRegister_UnregisterComponent(This,c=
omponent_guid_or_progid)	\
-    (This)->lpVtbl -> UnregisterComponent(This,component_guid_or_progid)
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchComponentRegist=
er_RegisterComponent_Proxy(=20
-    IGoogleDesktopSearchComponentRegister * This,
-    /* [in] */ BSTR component_guid_or_progid,
-    /* [in] */ VARIANT component_description,
-    /* [retval][out] */ IGoogleDesktopSearchComponentRegistration **regi=
stration);
-
-
-void __RPC_STUB IGoogleDesktopSearchComponentRegister_RegisterComponent_=
Stub(
-    IRpcStubBuffer *This,
-    IRpcChannelBuffer *_pRpcChannelBuffer,
-    PRPC_MESSAGE _pRpcMessage,
-    DWORD *_pdwStubPhase);
-
-
-/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchComponentRegist=
er_UnregisterComponent_Proxy(=20
-    IGoogleDesktopSearchComponentRegister * This,
-    /* [in] */ BSTR component_guid_or_progid);
-
-
-void __RPC_STUB IGoogleDesktopSearchComponentRegister_UnregisterComponen=
t_Stub(
-    IRpcStubBuffer *This,
-    IRpcChannelBuffer *_pRpcChannelBuffer,
-    PRPC_MESSAGE _pRpcMessage,
-    DWORD *_pdwStubPhase);
-
-
-
-#endif 	/* __IGoogleDesktopSearchComponentRegister_INTERFACE_DEFINED__ *=
/
-
-
-#ifndef __IGoogleDesktopSearchEvent_INTERFACE_DEFINED__
-#define __IGoogleDesktopSearchEvent_INTERFACE_DEFINED__
-
-/* interface IGoogleDesktopSearchEvent */
-/* [unique][oleautomation][dual][uuid][object] */=20
-
-
-enum EventFlags
-    {	EventFlagIndexable	=3D 0x1,
-	EventFlagHistorical	=3D 0x10
-    } ;
-
-EXTERN_C const IID IID_IGoogleDesktopSearchEvent;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-   =20
-    MIDL_INTERFACE("BDAC0047-4759-43a1-BA04-B148E1679E87")
-    IGoogleDesktopSearchEvent : public IDispatch
-    {
-    public:
-        virtual /* [id] */ HRESULT STDMETHODCALLTYPE AddProperty(=20
-            BSTR property_name,
-            VARIANT property_value) =3D 0;
-       =20
-        virtual /* [id] */ HRESULT STDMETHODCALLTYPE Send(=20
-            long event_flags) =3D 0;
-       =20
-    };
-   =20
-#else 	/* C style interface */
-
-    typedef struct IGoogleDesktopSearchEventVtbl
-    {
-        BEGIN_INTERFACE
-       =20
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
-            IGoogleDesktopSearchEvent * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ void **ppvObject);
-       =20
-        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
-            IGoogleDesktopSearchEvent * This);
-       =20
-        ULONG ( STDMETHODCALLTYPE *Release )(=20
-            IGoogleDesktopSearchEvent * This);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
-            IGoogleDesktopSearchEvent * This,
-            /* [out] */ UINT *pctinfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
-            IGoogleDesktopSearchEvent * This,
-            /* [in] */ UINT iTInfo,
-            /* [in] */ LCID lcid,
-            /* [out] */ ITypeInfo **ppTInfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
-            IGoogleDesktopSearchEvent * This,
-            /* [in] */ REFIID riid,
-            /* [size_is][in] */ LPOLESTR *rgszNames,
-            /* [in] */ UINT cNames,
-            /* [in] */ LCID lcid,
-            /* [size_is][out] */ DISPID *rgDispId);
-       =20
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
-            IGoogleDesktopSearchEvent * This,
-            /* [in] */ DISPID dispIdMember,
-            /* [in] */ REFIID riid,
-            /* [in] */ LCID lcid,
-            /* [in] */ WORD wFlags,
-            /* [out][in] */ DISPPARAMS *pDispParams,
-            /* [out] */ VARIANT *pVarResult,
-            /* [out] */ EXCEPINFO *pExcepInfo,
-            /* [out] */ UINT *puArgErr);
-       =20
-        /* [id] */ HRESULT ( STDMETHODCALLTYPE *AddProperty )(=20
-            IGoogleDesktopSearchEvent * This,
-            BSTR property_name,
-            VARIANT property_value);
-       =20
-        /* [id] */ HRESULT ( STDMETHODCALLTYPE *Send )(=20
-            IGoogleDesktopSearchEvent * This,
-            long event_flags);
-       =20
-        END_INTERFACE
-    } IGoogleDesktopSearchEventVtbl;
-
-    interface IGoogleDesktopSearchEvent
-    {
-        CONST_VTBL struct IGoogleDesktopSearchEventVtbl *lpVtbl;
-    };
-
-   =20
-
-#ifdef COBJMACROS
-
-
-#define IGoogleDesktopSearchEvent_QueryInterface(This,riid,ppvObject)	\
-    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-
-#define IGoogleDesktopSearchEvent_AddRef(This)	\
-    (This)->lpVtbl -> AddRef(This)
-
-#define IGoogleDesktopSearchEvent_Release(This)	\
-    (This)->lpVtbl -> Release(This)
-
-
-#define IGoogleDesktopSearchEvent_GetTypeInfoCount(This,pctinfo)	\
-    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-
-#define IGoogleDesktopSearchEvent_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	=
\
-    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-
-#define IGoogleDesktopSearchEvent_GetIDsOfNames(This,riid,rgszNames,cNam=
es,lcid,rgDispId)	\
-    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
-
-#define IGoogleDesktopSearchEvent_Invoke(This,dispIdMember,riid,lcid,wFl=
ags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
-    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
-
-
-#define IGoogleDesktopSearchEvent_AddProperty(This,property_name,propert=
y_value)	\
-    (This)->lpVtbl -> AddProperty(This,property_name,property_value)
-
-#define IGoogleDesktopSearchEvent_Send(This,event_flags)	\
-    (This)->lpVtbl -> Send(This,event_flags)
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchEvent_AddProper=
ty_Proxy(=20
-    IGoogleDesktopSearchEvent * This,
-    BSTR property_name,
-    VARIANT property_value);
-
-
-void __RPC_STUB IGoogleDesktopSearchEvent_AddProperty_Stub(
-    IRpcStubBuffer *This,
-    IRpcChannelBuffer *_pRpcChannelBuffer,
-    PRPC_MESSAGE _pRpcMessage,
-    DWORD *_pdwStubPhase);
-
-
-/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchEvent_Send_Prox=
y(=20
-    IGoogleDesktopSearchEvent * This,
-    long event_flags);
-
-
-void __RPC_STUB IGoogleDesktopSearchEvent_Send_Stub(
-    IRpcStubBuffer *This,
-    IRpcChannelBuffer *_pRpcChannelBuffer,
-    PRPC_MESSAGE _pRpcMessage,
-    DWORD *_pdwStubPhase);
-
-
-
-#endif 	/* __IGoogleDesktopSearchEvent_INTERFACE_DEFINED__ */
-
-
-#ifndef __IGoogleDesktopSearchEventFactory_INTERFACE_DEFINED__
-#define __IGoogleDesktopSearchEventFactory_INTERFACE_DEFINED__
-
-/* interface IGoogleDesktopSearchEventFactory */
-/* [unique][oleautomation][dual][uuid][object] */=20
-
-
-EXTERN_C const IID IID_IGoogleDesktopSearchEventFactory;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-   =20
-    MIDL_INTERFACE("A79E51C6-DB2D-4a44-848E-A8EBB22E5337")
-    IGoogleDesktopSearchEventFactory : public IDispatch
-    {
-    public:
-        virtual /* [id] */ HRESULT STDMETHODCALLTYPE CreateEvent(=20
-            /* [in] */ BSTR component_guid_or_progid,
-            /* [in] */ BSTR schema_name,
-            /* [retval][out] */ IDispatch **event) =3D 0;
-       =20
-    };
-   =20
-#else 	/* C style interface */
-
-    typedef struct IGoogleDesktopSearchEventFactoryVtbl
-    {
-        BEGIN_INTERFACE
-       =20
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
-            IGoogleDesktopSearchEventFactory * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ void **ppvObject);
-       =20
-        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
-            IGoogleDesktopSearchEventFactory * This);
-       =20
-        ULONG ( STDMETHODCALLTYPE *Release )(=20
-            IGoogleDesktopSearchEventFactory * This);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
-            IGoogleDesktopSearchEventFactory * This,
-            /* [out] */ UINT *pctinfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
-            IGoogleDesktopSearchEventFactory * This,
-            /* [in] */ UINT iTInfo,
-            /* [in] */ LCID lcid,
-            /* [out] */ ITypeInfo **ppTInfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
-            IGoogleDesktopSearchEventFactory * This,
-            /* [in] */ REFIID riid,
-            /* [size_is][in] */ LPOLESTR *rgszNames,
-            /* [in] */ UINT cNames,
-            /* [in] */ LCID lcid,
-            /* [size_is][out] */ DISPID *rgDispId);
-       =20
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
-            IGoogleDesktopSearchEventFactory * This,
-            /* [in] */ DISPID dispIdMember,
-            /* [in] */ REFIID riid,
-            /* [in] */ LCID lcid,
-            /* [in] */ WORD wFlags,
-            /* [out][in] */ DISPPARAMS *pDispParams,
-            /* [out] */ VARIANT *pVarResult,
-            /* [out] */ EXCEPINFO *pExcepInfo,
-            /* [out] */ UINT *puArgErr);
-       =20
-        /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateEvent )(=20
-            IGoogleDesktopSearchEventFactory * This,
-            /* [in] */ BSTR component_guid_or_progid,
-            /* [in] */ BSTR schema_name,
-            /* [retval][out] */ IDispatch **event);
-       =20
-        END_INTERFACE
-    } IGoogleDesktopSearchEventFactoryVtbl;
-
-    interface IGoogleDesktopSearchEventFactory
-    {
-        CONST_VTBL struct IGoogleDesktopSearchEventFactoryVtbl *lpVtbl;
-    };
-
-   =20
-
-#ifdef COBJMACROS
-
-
-#define IGoogleDesktopSearchEventFactory_QueryInterface(This,riid,ppvObj=
ect)	\
-    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-
-#define IGoogleDesktopSearchEventFactory_AddRef(This)	\
-    (This)->lpVtbl -> AddRef(This)
-
-#define IGoogleDesktopSearchEventFactory_Release(This)	\
-    (This)->lpVtbl -> Release(This)
-
-
-#define IGoogleDesktopSearchEventFactory_GetTypeInfoCount(This,pctinfo)	=
\
-    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-
-#define IGoogleDesktopSearchEventFactory_GetTypeInfo(This,iTInfo,lcid,pp=
TInfo)	\
-    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-
-#define IGoogleDesktopSearchEventFactory_GetIDsOfNames(This,riid,rgszNam=
es,cNames,lcid,rgDispId)	\
-    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
-
-#define IGoogleDesktopSearchEventFactory_Invoke(This,dispIdMember,riid,l=
cid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
-    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
-
-
-#define IGoogleDesktopSearchEventFactory_CreateEvent(This,component_guid=
_or_progid,schema_name,event)	\
-    (This)->lpVtbl -> CreateEvent(This,component_guid_or_progid,schema_n=
ame,event)
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchEventFactory_Cr=
eateEvent_Proxy(=20
-    IGoogleDesktopSearchEventFactory * This,
-    /* [in] */ BSTR component_guid_or_progid,
-    /* [in] */ BSTR schema_name,
-    /* [retval][out] */ IDispatch **event);
-
-
-void __RPC_STUB IGoogleDesktopSearchEventFactory_CreateEvent_Stub(
-    IRpcStubBuffer *This,
-    IRpcChannelBuffer *_pRpcChannelBuffer,
-    PRPC_MESSAGE _pRpcMessage,
-    DWORD *_pdwStubPhase);
-
-
-
-#endif 	/* __IGoogleDesktopSearchEventFactory_INTERFACE_DEFINED__ */
-
-
-
-#ifndef __GoogleDesktopSearchAPILib_LIBRARY_DEFINED__
-#define __GoogleDesktopSearchAPILib_LIBRARY_DEFINED__
-
-/* library GoogleDesktopSearchAPILib */
-/* [helpstring][version][uuid] */=20
-
-
-
-
-EXTERN_C const IID LIBID_GoogleDesktopSearchAPILib;
-
-#ifndef __DGoogleDesktopSearchFileNotify_DISPINTERFACE_DEFINED__
-#define __DGoogleDesktopSearchFileNotify_DISPINTERFACE_DEFINED__
-
-/* dispinterface DGoogleDesktopSearchFileNotify */
-/* [uuid] */=20
-
-
-EXTERN_C const IID DIID_DGoogleDesktopSearchFileNotify;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
-    MIDL_INTERFACE("A1DE6DB8-B20F-445c-BFDE-16C8D53A2FA1")
-    DGoogleDesktopSearchFileNotify : public IDispatch
-    {
-    };
-   =20
-#else 	/* C style interface */
-
-    typedef struct DGoogleDesktopSearchFileNotifyVtbl
-    {
-        BEGIN_INTERFACE
-       =20
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
-            DGoogleDesktopSearchFileNotify * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ void **ppvObject);
-       =20
-        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
-            DGoogleDesktopSearchFileNotify * This);
-       =20
-        ULONG ( STDMETHODCALLTYPE *Release )(=20
-            DGoogleDesktopSearchFileNotify * This);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
-            DGoogleDesktopSearchFileNotify * This,
-            /* [out] */ UINT *pctinfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
-            DGoogleDesktopSearchFileNotify * This,
-            /* [in] */ UINT iTInfo,
-            /* [in] */ LCID lcid,
-            /* [out] */ ITypeInfo **ppTInfo);
-       =20
-        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
-            DGoogleDesktopSearchFileNotify * This,
-            /* [in] */ REFIID riid,
-            /* [size_is][in] */ LPOLESTR *rgszNames,
-            /* [in] */ UINT cNames,
-            /* [in] */ LCID lcid,
-            /* [size_is][out] */ DISPID *rgDispId);
-       =20
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
-            DGoogleDesktopSearchFileNotify * This,
-            /* [in] */ DISPID dispIdMember,
-            /* [in] */ REFIID riid,
-            /* [in] */ LCID lcid,
-            /* [in] */ WORD wFlags,
-            /* [out][in] */ DISPPARAMS *pDispParams,
-            /* [out] */ VARIANT *pVarResult,
-            /* [out] */ EXCEPINFO *pExcepInfo,
-            /* [out] */ UINT *puArgErr);
-       =20
-        END_INTERFACE
-    } DGoogleDesktopSearchFileNotifyVtbl;
-
-    interface DGoogleDesktopSearchFileNotify
-    {
-        CONST_VTBL struct DGoogleDesktopSearchFileNotifyVtbl *lpVtbl;
-    };
-
-   =20
-
-#ifdef COBJMACROS
-
-
-#define DGoogleDesktopSearchFileNotify_QueryInterface(This,riid,ppvObjec=
t)	\
-    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-
-#define DGoogleDesktopSearchFileNotify_AddRef(This)	\
-    (This)->lpVtbl -> AddRef(This)
-
-#define DGoogleDesktopSearchFileNotify_Release(This)	\
-    (This)->lpVtbl -> Release(This)
-
-
-#define DGoogleDesktopSearchFileNotify_GetTypeInfoCount(This,pctinfo)	\
-    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-
-#define DGoogleDesktopSearchFileNotify_GetTypeInfo(This,iTInfo,lcid,ppTI=
nfo)	\
-    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-
-#define DGoogleDesktopSearchFileNotify_GetIDsOfNames(This,riid,rgszNames=
,cNames,lcid,rgDispId)	\
-    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
-
-#define DGoogleDesktopSearchFileNotify_Invoke(This,dispIdMember,riid,lci=
d,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
-    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-#endif 	/* __DGoogleDesktopSearchFileNotify_DISPINTERFACE_DEFINED__ */
-
-
-EXTERN_C const CLSID CLSID_GoogleDesktopSearch;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("579822B3-44CD-4786-83E0-AE32BCB9E6B1")
-GoogleDesktopSearch;
-#endif
-
-EXTERN_C const CLSID CLSID_GoogleDesktopSearchRegister;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("BB8B07A0-B8D1-44e0-A262-C9B7212AEC68")
-GoogleDesktopSearchRegister;
-#endif
-#endif /* __GoogleDesktopSearchAPILib_LIBRARY_DEFINED__ */
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *=
, unsigned long            , BSTR * );=20
-unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned=
 char *, BSTR * );=20
-unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned=
 char *, BSTR * );=20
-void                      __RPC_USER  BSTR_UserFree(     unsigned long *=
, BSTR * );=20
-
-unsigned long             __RPC_USER  VARIANT_UserSize(     unsigned lon=
g *, unsigned long            , VARIANT * );=20
-unsigned char * __RPC_USER  VARIANT_UserMarshal(  unsigned long *, unsig=
ned char *, VARIANT * );=20
-unsigned char * __RPC_USER  VARIANT_UserUnmarshal(unsigned long *, unsig=
ned char *, VARIANT * );=20
-void                      __RPC_USER  VARIANT_UserFree(     unsigned lon=
g *, VARIANT * );=20
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interface=
s */
+
+
+ /* File created by MIDL compiler version 6.00.0361 */
+/* at Fri Mar 25 17:57:54 2005
+ */
+/* Compiler settings for .\GoogleDesktopSearchAPI.idl:
+    Oicf, W1, Zp8, env=3DWin32 (32b run)
+    protocol : dce , ms_ext, c_ext, robust
+    error checks: allocation ref bounds_check enum stub_data=20
+    VC __declspec() decoration level:=20
+         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+         DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+//@@MIDL_FILE_HEADING(  )
+
+#pragma warning( disable: 4049 )  /* more than 64k source lines */
+
+
+/* verify that the <rpcndr.h> version is high enough to compile this fil=
e*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of <rpcndr.h>
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __GoogleDesktopSearchAPI_h__
+#define __GoogleDesktopSearchAPI_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >=3D 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */=20
+
+#ifndef __IGoogleDesktopSearchComponentRegistration_FWD_DEFINED__
+#define __IGoogleDesktopSearchComponentRegistration_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchComponentRegistration IGoogleDeskt=
opSearchComponentRegistration;
+#endif 	/* __IGoogleDesktopSearchComponentRegistration_FWD_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchComponentRegister_FWD_DEFINED__
+#define __IGoogleDesktopSearchComponentRegister_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchComponentRegister IGoogleDesktopSe=
archComponentRegister;
+#endif 	/* __IGoogleDesktopSearchComponentRegister_FWD_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchEvent_FWD_DEFINED__
+#define __IGoogleDesktopSearchEvent_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchEvent IGoogleDesktopSearchEvent;
+#endif 	/* __IGoogleDesktopSearchEvent_FWD_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchEventFactory_FWD_DEFINED__
+#define __IGoogleDesktopSearchEventFactory_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchEventFactory IGoogleDesktopSearchE=
ventFactory;
+#endif 	/* __IGoogleDesktopSearchEventFactory_FWD_DEFINED__ */
+
+
+#ifndef __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
+#define __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
+typedef interface DGoogleDesktopSearchFileNotify DGoogleDesktopSearchFil=
eNotify;
+#endif 	/* __DGoogleDesktopSearchFileNotify_FWD_DEFINED__ */
+
+
+#ifndef __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
+#define __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
+typedef interface DGoogleDesktopSearchFileNotify DGoogleDesktopSearchFil=
eNotify;
+#endif 	/* __DGoogleDesktopSearchFileNotify_FWD_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchEvent_FWD_DEFINED__
+#define __IGoogleDesktopSearchEvent_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchEvent IGoogleDesktopSearchEvent;
+#endif 	/* __IGoogleDesktopSearchEvent_FWD_DEFINED__ */
+
+
+#ifndef __GoogleDesktopSearch_FWD_DEFINED__
+#define __GoogleDesktopSearch_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class GoogleDesktopSearch GoogleDesktopSearch;
+#else
+typedef struct GoogleDesktopSearch GoogleDesktopSearch;
+#endif /* __cplusplus */
+
+#endif 	/* __GoogleDesktopSearch_FWD_DEFINED__ */
+
+
+#ifndef __GoogleDesktopSearchRegister_FWD_DEFINED__
+#define __GoogleDesktopSearchRegister_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class GoogleDesktopSearchRegister GoogleDesktopSearchRegister;
+#else
+typedef struct GoogleDesktopSearchRegister GoogleDesktopSearchRegister;
+#endif /* __cplusplus */
+
+#endif 	/* __GoogleDesktopSearchRegister_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif=20
+
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void * );=20
+
+/* interface __MIDL_itf_GoogleDesktopSearchAPI_0000 */
+/* [local] */=20
+
+#include <winerror.h>
+#define E_EXTENSION_REGISTERED           MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0001)
+#define E_COMPONENT_NOT_REGISTERED       MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0002)
+#define E_NO_SUCH_SCHEMA                 MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0003)
+#define E_NO_SUCH_PROPERTY               MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0004)
+#define E_COMPONENT_DISABLED             MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0005)
+#define E_COMPONENT_ALREADY_REGISTERED   MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0006)
+#define S_INDEXING_PAUSED                MAKE_HRESULT(SEVERITY_SUCCESS, =
FACILITY_ITF, 0x0007)
+#define E_EVENT_TOO_LARGE                MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0008)
+#define E_SERVICE_NOT_RUNNING            MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x0009)
+#define E_INVALID_EVENT_FLAGS            MAKE_HRESULT(SEVERITY_ERROR, FA=
CILITY_ITF, 0x000A)
+
+
+extern RPC_IF_HANDLE __MIDL_itf_GoogleDesktopSearchAPI_0000_v0_0_c_ifspe=
c;
+extern RPC_IF_HANDLE __MIDL_itf_GoogleDesktopSearchAPI_0000_v0_0_s_ifspe=
c;
+
+#ifndef __IGoogleDesktopSearchComponentRegistration_INTERFACE_DEFINED__
+#define __IGoogleDesktopSearchComponentRegistration_INTERFACE_DEFINED__
+
+/* interface IGoogleDesktopSearchComponentRegistration */
+/* [unique][oleautomation][dual][uuid][object] */=20
+
+
+EXTERN_C const IID IID_IGoogleDesktopSearchComponentRegistration;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+   =20
+    MIDL_INTERFACE("151857B2-26E0-4f4d-ACED-4F7E4B2065EF")
+    IGoogleDesktopSearchComponentRegistration : public IDispatch
+    {
+    public:
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE RegisterExtension(=20
+            /* [in] */ BSTR extension_handled) =3D 0;
+       =20
+    };
+   =20
+#else 	/* C style interface */
+
+    typedef struct IGoogleDesktopSearchComponentRegistrationVtbl
+    {
+        BEGIN_INTERFACE
+       =20
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+       =20
+        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
+            IGoogleDesktopSearchComponentRegistration * This);
+       =20
+        ULONG ( STDMETHODCALLTYPE *Release )(=20
+            IGoogleDesktopSearchComponentRegistration * This);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [out] */ UINT *pctinfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+       =20
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+       =20
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *RegisterExtension )(=20
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ BSTR extension_handled);
+       =20
+        END_INTERFACE
+    } IGoogleDesktopSearchComponentRegistrationVtbl;
+
+    interface IGoogleDesktopSearchComponentRegistration
+    {
+        CONST_VTBL struct IGoogleDesktopSearchComponentRegistrationVtbl =
*lpVtbl;
+    };
+
+   =20
+
+#ifdef COBJMACROS
+
+
+#define IGoogleDesktopSearchComponentRegistration_QueryInterface(This,ri=
id,ppvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IGoogleDesktopSearchComponentRegistration_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IGoogleDesktopSearchComponentRegistration_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IGoogleDesktopSearchComponentRegistration_GetTypeInfoCount(This,=
pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IGoogleDesktopSearchComponentRegistration_GetTypeInfo(This,iTInf=
o,lcid,ppTInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IGoogleDesktopSearchComponentRegistration_GetIDsOfNames(This,rii=
d,rgszNames,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
+
+#define IGoogleDesktopSearchComponentRegistration_Invoke(This,dispIdMemb=
er,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IGoogleDesktopSearchComponentRegistration_RegisterExtension(This=
,extension_handled)	\
+    (This)->lpVtbl -> RegisterExtension(This,extension_handled)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchComponentRegist=
ration_RegisterExtension_Proxy(=20
+    IGoogleDesktopSearchComponentRegistration * This,
+    /* [in] */ BSTR extension_handled);
+
+
+void __RPC_STUB IGoogleDesktopSearchComponentRegistration_RegisterExtens=
ion_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IGoogleDesktopSearchComponentRegistration_INTERFACE_DEFINED=
__ */
+
+
+#ifndef __IGoogleDesktopSearchComponentRegister_INTERFACE_DEFINED__
+#define __IGoogleDesktopSearchComponentRegister_INTERFACE_DEFINED__
+
+/* interface IGoogleDesktopSearchComponentRegister */
+/* [unique][oleautomation][dual][uuid][object] */=20
+
+
+EXTERN_C const IID IID_IGoogleDesktopSearchComponentRegister;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+   =20
+    MIDL_INTERFACE("9B311E80-BC95-4518-A58C-446EC9A082B5")
+    IGoogleDesktopSearchComponentRegister : public IDispatch
+    {
+    public:
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE RegisterComponent(=20
+            /* [in] */ BSTR component_guid_or_progid,
+            /* [in] */ VARIANT component_description,
+            /* [retval][out] */ IGoogleDesktopSearchComponentRegistratio=
n **registration) =3D 0;
+       =20
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE UnregisterComponent=
(=20
+            /* [in] */ BSTR component_guid_or_progid) =3D 0;
+       =20
+    };
+   =20
+#else 	/* C style interface */
+
+    typedef struct IGoogleDesktopSearchComponentRegisterVtbl
+    {
+        BEGIN_INTERFACE
+       =20
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+       =20
+        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
+            IGoogleDesktopSearchComponentRegister * This);
+       =20
+        ULONG ( STDMETHODCALLTYPE *Release )(=20
+            IGoogleDesktopSearchComponentRegister * This);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [out] */ UINT *pctinfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+       =20
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+       =20
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *RegisterComponent )(=20
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ BSTR component_guid_or_progid,
+            /* [in] */ VARIANT component_description,
+            /* [retval][out] */ IGoogleDesktopSearchComponentRegistratio=
n **registration);
+       =20
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterComponent )(=20
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ BSTR component_guid_or_progid);
+       =20
+        END_INTERFACE
+    } IGoogleDesktopSearchComponentRegisterVtbl;
+
+    interface IGoogleDesktopSearchComponentRegister
+    {
+        CONST_VTBL struct IGoogleDesktopSearchComponentRegisterVtbl *lpV=
tbl;
+    };
+
+   =20
+
+#ifdef COBJMACROS
+
+
+#define IGoogleDesktopSearchComponentRegister_QueryInterface(This,riid,p=
pvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IGoogleDesktopSearchComponentRegister_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IGoogleDesktopSearchComponentRegister_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IGoogleDesktopSearchComponentRegister_GetTypeInfoCount(This,pcti=
nfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IGoogleDesktopSearchComponentRegister_GetTypeInfo(This,iTInfo,lc=
id,ppTInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IGoogleDesktopSearchComponentRegister_GetIDsOfNames(This,riid,rg=
szNames,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
+
+#define IGoogleDesktopSearchComponentRegister_Invoke(This,dispIdMember,r=
iid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IGoogleDesktopSearchComponentRegister_RegisterComponent(This,com=
ponent_guid_or_progid,component_description,registration)	\
+    (This)->lpVtbl -> RegisterComponent(This,component_guid_or_progid,co=
mponent_description,registration)
+
+#define IGoogleDesktopSearchComponentRegister_UnregisterComponent(This,c=
omponent_guid_or_progid)	\
+    (This)->lpVtbl -> UnregisterComponent(This,component_guid_or_progid)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchComponentRegist=
er_RegisterComponent_Proxy(=20
+    IGoogleDesktopSearchComponentRegister * This,
+    /* [in] */ BSTR component_guid_or_progid,
+    /* [in] */ VARIANT component_description,
+    /* [retval][out] */ IGoogleDesktopSearchComponentRegistration **regi=
stration);
+
+
+void __RPC_STUB IGoogleDesktopSearchComponentRegister_RegisterComponent_=
Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchComponentRegist=
er_UnregisterComponent_Proxy(=20
+    IGoogleDesktopSearchComponentRegister * This,
+    /* [in] */ BSTR component_guid_or_progid);
+
+
+void __RPC_STUB IGoogleDesktopSearchComponentRegister_UnregisterComponen=
t_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IGoogleDesktopSearchComponentRegister_INTERFACE_DEFINED__ *=
/
+
+
+#ifndef __IGoogleDesktopSearchEvent_INTERFACE_DEFINED__
+#define __IGoogleDesktopSearchEvent_INTERFACE_DEFINED__
+
+/* interface IGoogleDesktopSearchEvent */
+/* [unique][oleautomation][dual][uuid][object] */=20
+
+
+enum EventFlags
+    {	EventFlagIndexable	=3D 0x1,
+	EventFlagHistorical	=3D 0x10
+    } ;
+
+EXTERN_C const IID IID_IGoogleDesktopSearchEvent;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+   =20
+    MIDL_INTERFACE("BDAC0047-4759-43a1-BA04-B148E1679E87")
+    IGoogleDesktopSearchEvent : public IDispatch
+    {
+    public:
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE AddProperty(=20
+            BSTR property_name,
+            VARIANT property_value) =3D 0;
+       =20
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE Send(=20
+            long event_flags) =3D 0;
+       =20
+    };
+   =20
+#else 	/* C style interface */
+
+    typedef struct IGoogleDesktopSearchEventVtbl
+    {
+        BEGIN_INTERFACE
+       =20
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
+            IGoogleDesktopSearchEvent * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+       =20
+        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
+            IGoogleDesktopSearchEvent * This);
+       =20
+        ULONG ( STDMETHODCALLTYPE *Release )(=20
+            IGoogleDesktopSearchEvent * This);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
+            IGoogleDesktopSearchEvent * This,
+            /* [out] */ UINT *pctinfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
+            IGoogleDesktopSearchEvent * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
+            IGoogleDesktopSearchEvent * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+       =20
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
+            IGoogleDesktopSearchEvent * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+       =20
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *AddProperty )(=20
+            IGoogleDesktopSearchEvent * This,
+            BSTR property_name,
+            VARIANT property_value);
+       =20
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *Send )(=20
+            IGoogleDesktopSearchEvent * This,
+            long event_flags);
+       =20
+        END_INTERFACE
+    } IGoogleDesktopSearchEventVtbl;
+
+    interface IGoogleDesktopSearchEvent
+    {
+        CONST_VTBL struct IGoogleDesktopSearchEventVtbl *lpVtbl;
+    };
+
+   =20
+
+#ifdef COBJMACROS
+
+
+#define IGoogleDesktopSearchEvent_QueryInterface(This,riid,ppvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IGoogleDesktopSearchEvent_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IGoogleDesktopSearchEvent_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IGoogleDesktopSearchEvent_GetTypeInfoCount(This,pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IGoogleDesktopSearchEvent_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	=
\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IGoogleDesktopSearchEvent_GetIDsOfNames(This,riid,rgszNames,cNam=
es,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
+
+#define IGoogleDesktopSearchEvent_Invoke(This,dispIdMember,riid,lcid,wFl=
ags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IGoogleDesktopSearchEvent_AddProperty(This,property_name,propert=
y_value)	\
+    (This)->lpVtbl -> AddProperty(This,property_name,property_value)
+
+#define IGoogleDesktopSearchEvent_Send(This,event_flags)	\
+    (This)->lpVtbl -> Send(This,event_flags)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchEvent_AddProper=
ty_Proxy(=20
+    IGoogleDesktopSearchEvent * This,
+    BSTR property_name,
+    VARIANT property_value);
+
+
+void __RPC_STUB IGoogleDesktopSearchEvent_AddProperty_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchEvent_Send_Prox=
y(=20
+    IGoogleDesktopSearchEvent * This,
+    long event_flags);
+
+
+void __RPC_STUB IGoogleDesktopSearchEvent_Send_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IGoogleDesktopSearchEvent_INTERFACE_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchEventFactory_INTERFACE_DEFINED__
+#define __IGoogleDesktopSearchEventFactory_INTERFACE_DEFINED__
+
+/* interface IGoogleDesktopSearchEventFactory */
+/* [unique][oleautomation][dual][uuid][object] */=20
+
+
+EXTERN_C const IID IID_IGoogleDesktopSearchEventFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+   =20
+    MIDL_INTERFACE("A79E51C6-DB2D-4a44-848E-A8EBB22E5337")
+    IGoogleDesktopSearchEventFactory : public IDispatch
+    {
+    public:
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE CreateEvent(=20
+            /* [in] */ BSTR component_guid_or_progid,
+            /* [in] */ BSTR schema_name,
+            /* [retval][out] */ IDispatch **event) =3D 0;
+       =20
+    };
+   =20
+#else 	/* C style interface */
+
+    typedef struct IGoogleDesktopSearchEventFactoryVtbl
+    {
+        BEGIN_INTERFACE
+       =20
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+       =20
+        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
+            IGoogleDesktopSearchEventFactory * This);
+       =20
+        ULONG ( STDMETHODCALLTYPE *Release )(=20
+            IGoogleDesktopSearchEventFactory * This);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
+            IGoogleDesktopSearchEventFactory * This,
+            /* [out] */ UINT *pctinfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+       =20
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+       =20
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateEvent )(=20
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ BSTR component_guid_or_progid,
+            /* [in] */ BSTR schema_name,
+            /* [retval][out] */ IDispatch **event);
+       =20
+        END_INTERFACE
+    } IGoogleDesktopSearchEventFactoryVtbl;
+
+    interface IGoogleDesktopSearchEventFactory
+    {
+        CONST_VTBL struct IGoogleDesktopSearchEventFactoryVtbl *lpVtbl;
+    };
+
+   =20
+
+#ifdef COBJMACROS
+
+
+#define IGoogleDesktopSearchEventFactory_QueryInterface(This,riid,ppvObj=
ect)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IGoogleDesktopSearchEventFactory_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IGoogleDesktopSearchEventFactory_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IGoogleDesktopSearchEventFactory_GetTypeInfoCount(This,pctinfo)	=
\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IGoogleDesktopSearchEventFactory_GetTypeInfo(This,iTInfo,lcid,pp=
TInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IGoogleDesktopSearchEventFactory_GetIDsOfNames(This,riid,rgszNam=
es,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
+
+#define IGoogleDesktopSearchEventFactory_Invoke(This,dispIdMember,riid,l=
cid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IGoogleDesktopSearchEventFactory_CreateEvent(This,component_guid=
_or_progid,schema_name,event)	\
+    (This)->lpVtbl -> CreateEvent(This,component_guid_or_progid,schema_n=
ame,event)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchEventFactory_Cr=
eateEvent_Proxy(=20
+    IGoogleDesktopSearchEventFactory * This,
+    /* [in] */ BSTR component_guid_or_progid,
+    /* [in] */ BSTR schema_name,
+    /* [retval][out] */ IDispatch **event);
+
+
+void __RPC_STUB IGoogleDesktopSearchEventFactory_CreateEvent_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IGoogleDesktopSearchEventFactory_INTERFACE_DEFINED__ */
+
+
+
+#ifndef __GoogleDesktopSearchAPILib_LIBRARY_DEFINED__
+#define __GoogleDesktopSearchAPILib_LIBRARY_DEFINED__
+
+/* library GoogleDesktopSearchAPILib */
+/* [helpstring][version][uuid] */=20
+
+
+
+
+EXTERN_C const IID LIBID_GoogleDesktopSearchAPILib;
+
+#ifndef __DGoogleDesktopSearchFileNotify_DISPINTERFACE_DEFINED__
+#define __DGoogleDesktopSearchFileNotify_DISPINTERFACE_DEFINED__
+
+/* dispinterface DGoogleDesktopSearchFileNotify */
+/* [uuid] */=20
+
+
+EXTERN_C const IID DIID_DGoogleDesktopSearchFileNotify;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+    MIDL_INTERFACE("A1DE6DB8-B20F-445c-BFDE-16C8D53A2FA1")
+    DGoogleDesktopSearchFileNotify : public IDispatch
+    {
+    };
+   =20
+#else 	/* C style interface */
+
+    typedef struct DGoogleDesktopSearchFileNotifyVtbl
+    {
+        BEGIN_INTERFACE
+       =20
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(=20
+            DGoogleDesktopSearchFileNotify * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+       =20
+        ULONG ( STDMETHODCALLTYPE *AddRef )(=20
+            DGoogleDesktopSearchFileNotify * This);
+       =20
+        ULONG ( STDMETHODCALLTYPE *Release )(=20
+            DGoogleDesktopSearchFileNotify * This);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(=20
+            DGoogleDesktopSearchFileNotify * This,
+            /* [out] */ UINT *pctinfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(=20
+            DGoogleDesktopSearchFileNotify * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+       =20
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(=20
+            DGoogleDesktopSearchFileNotify * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+       =20
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(=20
+            DGoogleDesktopSearchFileNotify * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+       =20
+        END_INTERFACE
+    } DGoogleDesktopSearchFileNotifyVtbl;
+
+    interface DGoogleDesktopSearchFileNotify
+    {
+        CONST_VTBL struct DGoogleDesktopSearchFileNotifyVtbl *lpVtbl;
+    };
+
+   =20
+
+#ifdef COBJMACROS
+
+
+#define DGoogleDesktopSearchFileNotify_QueryInterface(This,riid,ppvObjec=
t)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define DGoogleDesktopSearchFileNotify_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define DGoogleDesktopSearchFileNotify_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define DGoogleDesktopSearchFileNotify_GetTypeInfoCount(This,pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define DGoogleDesktopSearchFileNotify_GetTypeInfo(This,iTInfo,lcid,ppTI=
nfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define DGoogleDesktopSearchFileNotify_GetIDsOfNames(This,riid,rgszNames=
,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDi=
spId)
+
+#define DGoogleDesktopSearchFileNotify_Invoke(This,dispIdMember,riid,lci=
d,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispPar=
ams,pVarResult,pExcepInfo,puArgErr)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+#endif 	/* __DGoogleDesktopSearchFileNotify_DISPINTERFACE_DEFINED__ */
+
+
+EXTERN_C const CLSID CLSID_GoogleDesktopSearch;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("579822B3-44CD-4786-83E0-AE32BCB9E6B1")
+GoogleDesktopSearch;
+#endif
+
+EXTERN_C const CLSID CLSID_GoogleDesktopSearchRegister;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("BB8B07A0-B8D1-44e0-A262-C9B7212AEC68")
+GoogleDesktopSearchRegister;
+#endif
+#endif /* __GoogleDesktopSearchAPILib_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *=
, unsigned long            , BSTR * );=20
+unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned=
 char *, BSTR * );=20
+unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned=
 char *, BSTR * );=20
+void                      __RPC_USER  BSTR_UserFree(     unsigned long *=
, BSTR * );=20
+
+unsigned long             __RPC_USER  VARIANT_UserSize(     unsigned lon=
g *, unsigned long            , VARIANT * );=20
+unsigned char * __RPC_USER  VARIANT_UserMarshal(  unsigned long *, unsig=
ned char *, VARIANT * );=20
+unsigned char * __RPC_USER  VARIANT_UserUnmarshal(unsigned long *, unsig=
ned char *, VARIANT * );=20
+void                      __RPC_USER  VARIANT_UserFree(     unsigned lon=
g *, VARIANT * );=20
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+


Property changes on: trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAP=
I.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/MatroskaUtils/GDC/common/stdafx.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/JCThread.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/JCThread.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/JCThread.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,219 +1,219 @@
-/*
- * Part of The Matroska Shell Extension, a Windows Explorer shell ext to=
 access extra features of Matroska files
- *
- * JCThread.h
- *
- * Copyright (C) 2003 Jory 'jcsston' Stone <[email protected]>
- *
- * The Matroska Shell Extension is free software; you can redistribute i=
t and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * The Matroska Shell Extension is distributed in the hope that it will =
be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 =
 USA
-*/
-
-/*!
-	\version \$Id: JCThread.h,v 1.2 2004/03/08 07:56:51 jcsston Exp $
-	\author Jory Stone            <jcsston @ toughguy.net>=09
- 	\brief Thread base class, designed to be replacable with the wxThread =
class
-=09
- 	\par CVS Log=20
-  	$Log: JCThread.h,v $
-  	Revision 1.2  2004/03/08 07:56:51  jcsston
-  	Fixed some bugs in the bitrate scaning code
-  	Fixed a bug in the JCThread class, sometimes the thread would exit to=
o quickly
-  	Fixed a bug in the attachment opening code
-  =09
-  	Revision 1.1  2003/11/29 02:04:48  jcsston
-  	Changed to my JCCritcSec class for multi-threading, Started bitrate c=
lass
-  =09
-  	Revision 1.1  2003/11/24 21:55:29  jcsston
-  	Intial Commit, decoding working
-  	  		=09
-*/
-
-#ifndef _JC_THREAD_H_
-#define _JC_THREAD_H_
-
-#include <windows.h>
-#include <stdio.h>
-#include <process.h>
-#include <assert.h>
-
-// wrapper for whatever critical section we have
-class JCCritSec {
-public:
-	JCCritSec() {
-		InitializeCriticalSection(&m_CritSec);
-	};
-	~JCCritSec() {
-		DeleteCriticalSection(&m_CritSec);
-	};
-	void Lock() {
-		EnterCriticalSection(&m_CritSec);
-	};
-	void Unlock() {
-		LeaveCriticalSection(&m_CritSec);
-	};
-
-protected:
-	CRITICAL_SECTION m_CritSec;
-private:
-	// Make copy constructor and assignment operator inaccessible
-	// Copying a critical section is a bad idea :P
-	JCCritSec(const JCCritSec &refCritSec) { };
-	JCCritSec &operator=3D(const JCCritSec &refCritSec) { return *this; };
-};
-
-// Auto-Lock class
-class JCAutoLockCritSec {
-public:
-	JCAutoLockCritSec(JCCritSec *lockCritSec) {
-		m_CritSec =3D lockCritSec;
-		m_CritSec->Lock();
-	};
-	~JCAutoLockCritSec() {
-		m_CritSec->Unlock();
-	};
-
-protected:
-	JCCritSec *m_CritSec;
-private:
-	// Make copy constructor and assignment operator inaccessible
-	// Copying a critical section is a bad idea :P
-	JCAutoLockCritSec(const JCAutoLockCritSec &refCritSec) { assert(!"We sh=
ould never ever be here!"); };
-	JCAutoLockCritSec &operator=3D(const JCAutoLockCritSec &refCritSec) { a=
ssert(!"We should never ever be here!"); return *this; };
-};
-
-class JCThread {
-private:
-	static void __cdecl JCThreadFunction(void *threadData) {	=09
-		JCThread *threadObj =3D (JCThread *)threadData;
-		// Check thread pointer
-		assert(threadObj !=3D NULL);
-
-		threadObj->JCThread_AddRef();
-
-		threadObj->m_StartedCrit.Lock();
-		threadObj->m_bStarted =3D true;
-		threadObj->m_StartedCrit.Unlock();
-		threadObj->Entry();=09
-
-		threadObj->JCThread_RemoveRef();
-	=09
-		_endthread();
-	};
-public:
-	JCThread() {=20
-		m_hThread =3D NULL;
-		m_State =3D JCThread_State_Waiting;
-		m_bStarted =3D false;
-		m_RefCount =3D 0;
-	};
-	virtual ~JCThread() {=20
-		/*if (GetState() =3D=3D JCThread_State_Running) {
-			// We need to stop the thread before deleting it
-			Stop();
-		}*/
-	};
-
-	void Run() {
-		JCThread_AddRef();
-		m_StateCrit.Lock();
-		m_State =3D JCThread_State_Running;
-		m_StateCrit.Unlock();
-		m_hThread =3D (HANDLE)_beginthread(JCThreadFunction, 0, (void *)this);
-		// Wait for the thread to start
-		while (!TestDestroy()) {
-			m_StartedCrit.Lock();
-			if (m_bStarted) {
-				m_StartedCrit.Unlock();
-				break;
-			}
-			m_StartedCrit.Unlock();
-			Sleep(50);
-		}
-		JCThread_RemoveRef();
-	}
-	void Stop() {
-		m_StateCrit.Lock();
-		m_State =3D JCThread_State_Stopped;
-		m_StateCrit.Unlock();	=09
-	}
-	void Pause() {
-		JCAutoLockCritSec stateLock(&m_StateCrit);
-		if (m_State =3D=3D JCThread_State_Running) {
-			if (SuspendThread(m_hThread) !=3D 0xFFFFFFFF)
-				m_State =3D JCThread_State_Paused;
-		}
-	}
-	void Resume() {
-		JCAutoLockCritSec stateLock(&m_StateCrit);
-		if (m_State =3D=3D JCThread_State_Paused) {
-			if (ResumeThread(m_hThread) !=3D 0xFFFFFFFF)
-				m_State =3D JCThread_State_Running;
-		}
-	}
-=09
-	virtual void *Entry() =3D 0;=09
-
-	int GetState() {
-		int localState;
-		m_StateCrit.Lock();
-		localState =3D (int)m_State;
-		m_StateCrit.Unlock();
-		return localState;
-	};
-
-	long JCThread_AddRef() {
-		JCAutoLockCritSec refCountLock(&m_RefCountCrit);	=09
-		return m_RefCount++;
-	}
-	long JCThread_RemoveRef() {
-    {
-		  JCAutoLockCritSec refCountLock(&m_RefCountCrit);=09
-
-		  if (--m_RefCount)
-			  return m_RefCount;
-    }
-
-		delete this;
-
-		return 0L;
-	}
-
-protected:=09
-	bool TestDestroy() {
-		bool bExit =3D false;
-		m_StateCrit.Lock();
-		if (m_State =3D=3D JCThread_State_Stopped)
-			bExit =3D true;
-		m_StateCrit.Unlock();
-		return bExit;
-	}
-	HANDLE m_hThread;
-	JCCritSec m_StateCrit;
-	enum JCThread_State {=20
-		JCThread_State_Waiting =3D 0,
-		JCThread_State_Stopped,
-		JCThread_State_Running,
-		JCThread_State_Paused
-	};
-	JCThread_State m_State;
-	JCCritSec m_StartedCrit;
-	bool m_bStarted;
-	JCCritSec m_RefCountCrit;
-	long m_RefCount;
-};
-
-
-
+/*
+ * Part of The Matroska Shell Extension, a Windows Explorer shell ext to=
 access extra features of Matroska files
+ *
+ * JCThread.h
+ *
+ * Copyright (C) 2003 Jory 'jcsston' Stone <[email protected]>
+ *
+ * The Matroska Shell Extension is free software; you can redistribute i=
t and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * The Matroska Shell Extension is distributed in the hope that it will =
be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 =
 USA
+*/
+
+/*!
+	\version \$Id: JCThread.h,v 1.2 2004/03/08 07:56:51 jcsston Exp $
+	\author Jory Stone            <jcsston @ toughguy.net>=09
+ 	\brief Thread base class, designed to be replacable with the wxThread =
class
+=09
+ 	\par CVS Log=20
+  	$Log: JCThread.h,v $
+  	Revision 1.2  2004/03/08 07:56:51  jcsston
+  	Fixed some bugs in the bitrate scaning code
+  	Fixed a bug in the JCThread class, sometimes the thread would exit to=
o quickly
+  	Fixed a bug in the attachment opening code
+  =09
+  	Revision 1.1  2003/11/29 02:04:48  jcsston
+  	Changed to my JCCritcSec class for multi-threading, Started bitrate c=
lass
+  =09
+  	Revision 1.1  2003/11/24 21:55:29  jcsston
+  	Intial Commit, decoding working
+  	  		=09
+*/
+
+#ifndef _JC_THREAD_H_
+#define _JC_THREAD_H_
+
+#include <windows.h>
+#include <stdio.h>
+#include <process.h>
+#include <assert.h>
+
+// wrapper for whatever critical section we have
+class JCCritSec {
+public:
+	JCCritSec() {
+		InitializeCriticalSection(&m_CritSec);
+	};
+	~JCCritSec() {
+		DeleteCriticalSection(&m_CritSec);
+	};
+	void Lock() {
+		EnterCriticalSection(&m_CritSec);
+	};
+	void Unlock() {
+		LeaveCriticalSection(&m_CritSec);
+	};
+
+protected:
+	CRITICAL_SECTION m_CritSec;
+private:
+	// Make copy constructor and assignment operator inaccessible
+	// Copying a critical section is a bad idea :P
+	JCCritSec(const JCCritSec &refCritSec) { };
+	JCCritSec &operator=3D(const JCCritSec &refCritSec) { return *this; };
+};
+
+// Auto-Lock class
+class JCAutoLockCritSec {
+public:
+	JCAutoLockCritSec(JCCritSec *lockCritSec) {
+		m_CritSec =3D lockCritSec;
+		m_CritSec->Lock();
+	};
+	~JCAutoLockCritSec() {
+		m_CritSec->Unlock();
+	};
+
+protected:
+	JCCritSec *m_CritSec;
+private:
+	// Make copy constructor and assignment operator inaccessible
+	// Copying a critical section is a bad idea :P
+	JCAutoLockCritSec(const JCAutoLockCritSec &refCritSec) { assert(!"We sh=
ould never ever be here!"); };
+	JCAutoLockCritSec &operator=3D(const JCAutoLockCritSec &refCritSec) { a=
ssert(!"We should never ever be here!"); return *this; };
+};
+
+class JCThread {
+private:
+	static void __cdecl JCThreadFunction(void *threadData) {	=09
+		JCThread *threadObj =3D (JCThread *)threadData;
+		// Check thread pointer
+		assert(threadObj !=3D NULL);
+
+		threadObj->JCThread_AddRef();
+
+		threadObj->m_StartedCrit.Lock();
+		threadObj->m_bStarted =3D true;
+		threadObj->m_StartedCrit.Unlock();
+		threadObj->Entry();=09
+
+		threadObj->JCThread_RemoveRef();
+	=09
+		_endthread();
+	};
+public:
+	JCThread() {=20
+		m_hThread =3D NULL;
+		m_State =3D JCThread_State_Waiting;
+		m_bStarted =3D false;
+		m_RefCount =3D 0;
+	};
+	virtual ~JCThread() {=20
+		/*if (GetState() =3D=3D JCThread_State_Running) {
+			// We need to stop the thread before deleting it
+			Stop();
+		}*/
+	};
+
+	void Run() {
+		JCThread_AddRef();
+		m_StateCrit.Lock();
+		m_State =3D JCThread_State_Running;
+		m_StateCrit.Unlock();
+		m_hThread =3D (HANDLE)_beginthread(JCThreadFunction, 0, (void *)this);
+		// Wait for the thread to start
+		while (!TestDestroy()) {
+			m_StartedCrit.Lock();
+			if (m_bStarted) {
+				m_StartedCrit.Unlock();
+				break;
+			}
+			m_StartedCrit.Unlock();
+			Sleep(50);
+		}
+		JCThread_RemoveRef();
+	}
+	void Stop() {
+		m_StateCrit.Lock();
+		m_State =3D JCThread_State_Stopped;
+		m_StateCrit.Unlock();	=09
+	}
+	void Pause() {
+		JCAutoLockCritSec stateLock(&m_StateCrit);
+		if (m_State =3D=3D JCThread_State_Running) {
+			if (SuspendThread(m_hThread) !=3D 0xFFFFFFFF)
+				m_State =3D JCThread_State_Paused;
+		}
+	}
+	void Resume() {
+		JCAutoLockCritSec stateLock(&m_StateCrit);
+		if (m_State =3D=3D JCThread_State_Paused) {
+			if (ResumeThread(m_hThread) !=3D 0xFFFFFFFF)
+				m_State =3D JCThread_State_Running;
+		}
+	}
+=09
+	virtual void *Entry() =3D 0;=09
+
+	int GetState() {
+		int localState;
+		m_StateCrit.Lock();
+		localState =3D (int)m_State;
+		m_StateCrit.Unlock();
+		return localState;
+	};
+
+	long JCThread_AddRef() {
+		JCAutoLockCritSec refCountLock(&m_RefCountCrit);	=09
+		return m_RefCount++;
+	}
+	long JCThread_RemoveRef() {
+    {
+		  JCAutoLockCritSec refCountLock(&m_RefCountCrit);=09
+
+		  if (--m_RefCount)
+			  return m_RefCount;
+    }
+
+		delete this;
+
+		return 0L;
+	}
+
+protected:=09
+	bool TestDestroy() {
+		bool bExit =3D false;
+		m_StateCrit.Lock();
+		if (m_State =3D=3D JCThread_State_Stopped)
+			bExit =3D true;
+		m_StateCrit.Unlock();
+		return bExit;
+	}
+	HANDLE m_hThread;
+	JCCritSec m_StateCrit;
+	enum JCThread_State {=20
+		JCThread_State_Waiting =3D 0,
+		JCThread_State_Stopped,
+		JCThread_State_Running,
+		JCThread_State_Paused
+	};
+	JCThread_State m_State;
+	JCCritSec m_StartedCrit;
+	bool m_bStarted;
+	JCCritSec m_RefCountCrit;
+	long m_RefCount;
+};
+
+
+
 #endif // _JC_THREAD_H_
\ No newline at end of file


Property changes on: trunk/MatroskaUtils/JCThread.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/JList.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/JList.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/JList.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,77 +1,77 @@
-/**
-	*  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
-	*
-	*  JList.h
-	*
-	*  Copyright (C) Jory Stone - June 2003
-	*
-	*
-	*  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
-	*  it under the terms of the GNU General Public License as published by
-	*  the Free Software Foundation; either version 2, or (at your option)
-	*  any later version.
-	*
-	*  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
-	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	*  GNU General Public License for more details.
-	*
-	*  You should have received a copy of the GNU General Public License
-	*  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
-	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
-	*
-*/
-
-/*!
-    \file JList.h
-		\version \$Id: JList.h,v 1.1 2003/10/04 21:57:18 jcsston Exp $
-    \brief A simple linked-list
-		\author Jory Stone     <jcsston @ toughguy.net>
-*/
-
-#ifndef _JLIST_H_
-#define _JLIST_H_
-
-template<class _T> class JListItem {
-public:
-	JListItem() {
-		m_Next =3D NULL;
-	};
-	_T m_Data;
-	JListItem<_T> *m_Next;
-};
-
-/// Automaticly calls delete on data type, you should use pointers ;)
-template<class _T> class JList{
-public:
-	JList() {
-		m_FirstItem =3D NULL;
-	};
-	~JList() {
-		JListItem<_T> *temp =3D NULL;
-		temp =3D m_FirstItem;
-		while (m_FirstItem !=3D NULL)
-		{		=20
-			m_FirstItem =3D m_FirstItem->m_Next;
-
-			delete temp->m_Data;
-			delete temp;
-			temp =3D m_FirstItem;
-		}
-	};
-
-	void AddItem(_T newData) {
-		JListItem<_T> *objData =3D new JListItem<_T>();
-		objData->m_Data =3D newData;	=09
-		if (m_FirstItem =3D=3D NULL) {
-			m_FirstItem =3D objData;		=09
-		} else {
-			objData->m_Next =3D	m_FirstItem;
-			m_FirstItem =3D objData;
-		}
-	};
-protected:
-	JListItem<_T> *m_FirstItem;
-};
-
-#endif // _JLIST_H_
+/**
+	*  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
+	*
+	*  JList.h
+	*
+	*  Copyright (C) Jory Stone - June 2003
+	*
+	*
+	*  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+	*  it under the terms of the GNU General Public License as published by
+	*  the Free Software Foundation; either version 2, or (at your option)
+	*  any later version.
+	*
+	*  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	*  GNU General Public License for more details.
+	*
+	*  You should have received a copy of the GNU General Public License
+	*  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+	*
+*/
+
+/*!
+    \file JList.h
+		\version \$Id: JList.h,v 1.1 2003/10/04 21:57:18 jcsston Exp $
+    \brief A simple linked-list
+		\author Jory Stone     <jcsston @ toughguy.net>
+*/
+
+#ifndef _JLIST_H_
+#define _JLIST_H_
+
+template<class _T> class JListItem {
+public:
+	JListItem() {
+		m_Next =3D NULL;
+	};
+	_T m_Data;
+	JListItem<_T> *m_Next;
+};
+
+/// Automaticly calls delete on data type, you should use pointers ;)
+template<class _T> class JList{
+public:
+	JList() {
+		m_FirstItem =3D NULL;
+	};
+	~JList() {
+		JListItem<_T> *temp =3D NULL;
+		temp =3D m_FirstItem;
+		while (m_FirstItem !=3D NULL)
+		{		=20
+			m_FirstItem =3D m_FirstItem->m_Next;
+
+			delete temp->m_Data;
+			delete temp;
+			temp =3D m_FirstItem;
+		}
+	};
+
+	void AddItem(_T newData) {
+		JListItem<_T> *objData =3D new JListItem<_T>();
+		objData->m_Data =3D newData;	=09
+		if (m_FirstItem =3D=3D NULL) {
+			m_FirstItem =3D objData;		=09
+		} else {
+			objData->m_Next =3D	m_FirstItem;
+			m_FirstItem =3D objData;
+		}
+	};
+protected:
+	JListItem<_T> *m_FirstItem;
+};
+
+#endif // _JLIST_H_


Property changes on: trunk/MatroskaUtils/JList.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/JString.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/JString.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/JString.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,281 +1,281 @@
-/*
-*  The JString class, A Unicode string class
-*
-*  JString.h
-*
-*  Copyright (C) Jory Stone - July 2003
-*
-*
-*  The JString class is free software; you can redistribute it and/or mo=
dify
-*  it under the terms of the GNU General Public License as published by
-*  the Free Software Foundation; either version 2, or (at your option)
-*  any later version.
-*
-*  The JString class is distributed in the hope that it will be useful,
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-*  GNU General Public License for more details.
-*
-*  You should have received a copy of the GNU General Public License
-*  along with The JString class; see the file COPYING.  If not, write to
-*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-*
-*/
-
-/*!
-	\file JString.h
-	\version \$Id: JString.h,v 1.8 2004/01/12 03:53:14 jcsston Exp $
-	\brief A Unicode string class
-	\author Jory Stone     <jcsston @ toughguy.net>
-*/
-
-#ifndef _JSTRING_H_
-#define _JSTRING_H_
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <wchar.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-#include <vector>
-#include <ctype.h>
-
-#include <sstream>
-#include <string>
-
-#ifdef USE_VC_TYPES
-typedef unsigned char binary;
-typedef unsigned __int64 uint64;
-typedef unsigned __int32 uint32;
-typedef unsigned __int16 uint16;
-typedef __int64 int64;
-typedef __int32 int32;
-typedef __int16 int16;
-#else
-#include "ebml/EbmlTypes.h"
-using namespace LIBEBML_NAMESPACE;
-#endif
-
-class JString
-{
-public:
-	JString();
-	JString(unsigned long length);
-	JString(const wchar_t *value);
-	JString(const char *value);=09
-	JString(const JString &value);
-	~JString();
-	/// Append string to end of current string
-	JString & append(const wchar_t *value);
-	JString & append(const char *value);
-	JString & append(const wchar_t value);
-	JString & append(const char value);
-	/// Function to clear all the data
-	void clear();
-
-	/// Get the count that a char appears in the string
-	size_t Count(wchar_t value);
-=09
-	long Find(const wchar_t *value, bool bBackwards =3D false);
-	long Find(wchar_t value, bool bBackwards =3D false);
-
-  /// Get all characters before the first occurance of ch
-  /// (returns the whole string if ch not found)
-  JString BeforeFirst(wchar_t ch);
-  /// Get all characters before the last occurence of ch
-  /// (returns empty string if ch not found)
-  JString BeforeLast(wchar_t ch);
-  /// Get all characters after the first occurence of ch
-  /// (returns empty string if ch not found)
-  JString AfterFirst(wchar_t ch);
-  /// Get all characters after the last occurence of ch
-	/// (returns the whole string if ch not found)
-  JString AfterLast(wchar_t ch);
-
-
-	JString Left(unsigned long count);
-	JString Right(unsigned long count);
-	JString Mid(unsigned long start, unsigned long count);
-	/// printf style Formating function
-	static JString Format(const wchar_t *value, ...);
-	static JString Format(const char *value, ...);
-
-	//Convert to other datatypes
-	long toLong();
-	double toDouble();
-
-	/// Line break types
-	enum LineBreakType {
-		DosLineBreaks,
-		UnixLineBreaks,
-		MacLineBreaks
-	};
-	/// Find linebreak type
-	int GetLineBreakType();
-	/// Convert to linebreak type
-	JString & Convert2Dos();
-	/// Copy the string to a char *
-	void CopyTo(wchar_t **destStr);
-	void CopyTo(char **destStr);
-	/// Standard c_str() function
-	const wchar_t* c_str() const {return m_Data;}
-	/// Return ASCII const char *
-	const char* mb_str() {_UpdateASCII(); return m_DataASCII;}
-	/// returns wchar_t or char depending on if UNICODE is defined
-#ifdef UNICODE
-	const wchar_t* t_str() {return c_str();}
-#else
-	const char* t_str() {return mb_str();}=09
-#endif
-	/// Return length of string
-	unsigned long length() {return m_Length;}
-	unsigned long Length() {return m_Length;}
-
-	//Operators
-	JString & operator=3D(const JString &value) {_Set(value.c_str()); retur=
n *this;};
-	JString & operator=3D(const wchar_t *value) {_Set(value); return *this;=
};
-	JString & operator=3D(const char *value) {_Set(value); return *this;};
-	JString & operator=3D(wchar_t value) {_Set(value); return *this;};
-	JString & operator=3D(char value) {_Set(value); return *this;};
-	JString & operator=3D(const binary *value) {_Set(value); return *this;}=
;
-
-	JString & operator+=3D(const JString &value) {append(value.c_str()); re=
turn *this;};
-	JString & operator+=3D(const wchar_t *value) {append(value); return *th=
is;};
-	JString & operator+=3D(const char *value) {append(value); return *this;=
};
-	JString & operator+=3D(wchar_t value) {append(value); return *this;};
-	JString & operator+=3D(char value) {append(value); return *this;};=09
-
-	JString & operator<<(const wchar_t *value) {append(value); return *this=
;};
-	JString & operator<<(wchar_t value) {append(value); return *this;};
-	JString & operator<<(const char *value) {append(value); return *this;};
-	JString & operator<<(char value) {append(value); return *this;};
-
-	JString operator+(const wchar_t *value) {append(value); return *this;};
-	JString operator+(const char *value) {append(value); return *this;};
-	JString operator+(wchar_t value) {append(value); return *this;};
-	JString operator+(char value) {append(value); return *this;};
-
-	wchar_t operator[](size_t index) const {assert(index < m_Length); retur=
n m_Data[index];}
-	char operator[](size_t index) {assert(index < m_Length); _UpdateASCII()=
; return m_DataASCII[index];}
-
-	operator const wchar_t*() const {return c_str();}	=09
-
-protected:
-	/// Function to clear all the data, (for consuctor only)
-	inline void _Initialize();
-	/// Checks if the ASCII copy of the data needs to be updated
-	void _UpdateASCII();=09
-	//void _Set(const JString &value);
-	inline void _Set(const wchar_t *value);
-	inline void _Set(const char *value);
-	inline void _Set(const wchar_t value);
-	inline void _Set(const char value);
-	void _Set(const binary *value);
-
-	/// Get the length of a NULL-terminated string, being simple 1-line loo=
ps these can benfit from inlining
-	//inline static size_t strlen(const wchar_t *str);
-	//inline static size_t strlen(const char *str);
-	/// Removes (trims) leading whitespace characters from a string
-	static wchar_t *wslefttrim(wchar_t *source);
-	/// Removes (trims) trailing whitespace characters from a string
-	static wchar_t *wsrighttrim(wchar_t *source);
-
-	/// The string data itself
-	wchar_t *m_Data;
-	/// Flag true if ASCII data needs to be updated
-	bool m_bUpdateASCII;
-	/// ASCII version of data
-	char *m_DataASCII;
-	/// Length of the string, cached to faster access
-	unsigned long m_Length;
-=09
-	/// Line break type
-	enum LineBreakType m_lineBreak;
-
-	/// String Data class
-	/*class JStringData {
-	public:
-		JStringData() {
-			m_Data =3D NULL;
-			m_DataASCII =3D NULL;
-			m_Length =3D 0;
-			m_RefCount =3D 0;
-		};
-		~JStringData() {
-			delete m_Data;
-			delete m_DataASCII;
-		};
-		unsigned short AddRef() { return ++m_RefCount; }
-		unsigned short Release() {=20
-			if (--m_RefCount)
-				return m_RefCount;
-
-			delete this;
-			return 0;
-		};
-	=09
-		/// The string data itself
-		wchar_t *m_Data;
-		/// Flag true if ASCII data needs to be updated
-		bool m_bUpdateASCII;
-		/// ASCII version of data
-		char *m_DataASCII;
-		/// Length of the string, cached to faster access
-		unsigned long m_Length;	=09
-	protected:
-		unsigned short m_RefCount;
-	};
-	JStringData *m_JData;*/
-	/// UTF-8 to Unicode conversion class
-	class UTF8toUCS4 {
-	public:
-		enum { // return codes from put.
-			need_more =3D 0,
-			complete_code,
-			invalid_code,
-		};
-		UTF8toUCS4() : m_code(0), m_shift(0), m_mval(0) {}
-
-		/// reset the statemachine.
-		void reset() { m_code =3D m_shift =3D m_mval =3D 0; }
-
-		/// Read a byte and convert it, if we have a complete code we place it=
 in val and return complete_code.
-		/// otherwise, if any error we return invalid_code and do not modify s=
tate.
-		/// otherwise if no error we update state and return need_more.
-		int Convert(binary uc, uint64 & val);
-
-	protected:
-		/// the code we are currently building.
-		int m_code;
-		/// how much to shift in the next bits.
-		int m_shift;
-		/// minimum value.
-		int m_mval;=20
-	};
-};
-
-class SmartStringFormat : public std::wostringstream
-{
-public:
-	SmartStringFormat();
-	SmartStringFormat(const SmartStringFormat& copy);
-	~SmartStringFormat();
-
-	SmartStringFormat & operator << (const char *inStr);
-	SmartStringFormat & operator << (double value);
-	SmartStringFormat & operator << (float value);
-	SmartStringFormat & operator << (int16 value);
-	SmartStringFormat & operator << (int32 value);
-	SmartStringFormat & operator << (int64 value);
-	SmartStringFormat & operator << (uint16 value);
-	SmartStringFormat & operator << (uint32 value);
-	SmartStringFormat & operator << (uint64 value);
-
-protected:
-	wchar_t *m_TextBuffer;
-	unsigned long m_TextBufferSize;
-};
-
-#endif //_JSTRING_H_
+/*
+*  The JString class, A Unicode string class
+*
+*  JString.h
+*
+*  Copyright (C) Jory Stone - July 2003
+*
+*
+*  The JString class is free software; you can redistribute it and/or mo=
dify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2, or (at your option)
+*  any later version.
+*
+*  The JString class is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  You should have received a copy of the GNU General Public License
+*  along with The JString class; see the file COPYING.  If not, write to
+*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+*
+*/
+
+/*!
+	\file JString.h
+	\version \$Id: JString.h,v 1.8 2004/01/12 03:53:14 jcsston Exp $
+	\brief A Unicode string class
+	\author Jory Stone     <jcsston @ toughguy.net>
+*/
+
+#ifndef _JSTRING_H_
+#define _JSTRING_H_
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <wchar.h>
+#include <string.h>
+#include <math.h>
+#include <assert.h>
+#include <vector>
+#include <ctype.h>
+
+#include <sstream>
+#include <string>
+
+#ifdef USE_VC_TYPES
+typedef unsigned char binary;
+typedef unsigned __int64 uint64;
+typedef unsigned __int32 uint32;
+typedef unsigned __int16 uint16;
+typedef __int64 int64;
+typedef __int32 int32;
+typedef __int16 int16;
+#else
+#include "ebml/EbmlTypes.h"
+using namespace LIBEBML_NAMESPACE;
+#endif
+
+class JString
+{
+public:
+	JString();
+	JString(unsigned long length);
+	JString(const wchar_t *value);
+	JString(const char *value);=09
+	JString(const JString &value);
+	~JString();
+	/// Append string to end of current string
+	JString & append(const wchar_t *value);
+	JString & append(const char *value);
+	JString & append(const wchar_t value);
+	JString & append(const char value);
+	/// Function to clear all the data
+	void clear();
+
+	/// Get the count that a char appears in the string
+	size_t Count(wchar_t value);
+=09
+	long Find(const wchar_t *value, bool bBackwards =3D false);
+	long Find(wchar_t value, bool bBackwards =3D false);
+
+  /// Get all characters before the first occurance of ch
+  /// (returns the whole string if ch not found)
+  JString BeforeFirst(wchar_t ch);
+  /// Get all characters before the last occurence of ch
+  /// (returns empty string if ch not found)
+  JString BeforeLast(wchar_t ch);
+  /// Get all characters after the first occurence of ch
+  /// (returns empty string if ch not found)
+  JString AfterFirst(wchar_t ch);
+  /// Get all characters after the last occurence of ch
+	/// (returns the whole string if ch not found)
+  JString AfterLast(wchar_t ch);
+
+
+	JString Left(unsigned long count);
+	JString Right(unsigned long count);
+	JString Mid(unsigned long start, unsigned long count);
+	/// printf style Formating function
+	static JString Format(const wchar_t *value, ...);
+	static JString Format(const char *value, ...);
+
+	//Convert to other datatypes
+	long toLong();
+	double toDouble();
+
+	/// Line break types
+	enum LineBreakType {
+		DosLineBreaks,
+		UnixLineBreaks,
+		MacLineBreaks
+	};
+	/// Find linebreak type
+	int GetLineBreakType();
+	/// Convert to linebreak type
+	JString & Convert2Dos();
+	/// Copy the string to a char *
+	void CopyTo(wchar_t **destStr);
+	void CopyTo(char **destStr);
+	/// Standard c_str() function
+	const wchar_t* c_str() const {return m_Data;}
+	/// Return ASCII const char *
+	const char* mb_str() {_UpdateASCII(); return m_DataASCII;}
+	/// returns wchar_t or char depending on if UNICODE is defined
+#ifdef UNICODE
+	const wchar_t* t_str() {return c_str();}
+#else
+	const char* t_str() {return mb_str();}=09
+#endif
+	/// Return length of string
+	unsigned long length() {return m_Length;}
+	unsigned long Length() {return m_Length;}
+
+	//Operators
+	JString & operator=3D(const JString &value) {_Set(value.c_str()); retur=
n *this;};
+	JString & operator=3D(const wchar_t *value) {_Set(value); return *this;=
};
+	JString & operator=3D(const char *value) {_Set(value); return *this;};
+	JString & operator=3D(wchar_t value) {_Set(value); return *this;};
+	JString & operator=3D(char value) {_Set(value); return *this;};
+	JString & operator=3D(const binary *value) {_Set(value); return *this;}=
;
+
+	JString & operator+=3D(const JString &value) {append(value.c_str()); re=
turn *this;};
+	JString & operator+=3D(const wchar_t *value) {append(value); return *th=
is;};
+	JString & operator+=3D(const char *value) {append(value); return *this;=
};
+	JString & operator+=3D(wchar_t value) {append(value); return *this;};
+	JString & operator+=3D(char value) {append(value); return *this;};=09
+
+	JString & operator<<(const wchar_t *value) {append(value); return *this=
;};
+	JString & operator<<(wchar_t value) {append(value); return *this;};
+	JString & operator<<(const char *value) {append(value); return *this;};
+	JString & operator<<(char value) {append(value); return *this;};
+
+	JString operator+(const wchar_t *value) {append(value); return *this;};
+	JString operator+(const char *value) {append(value); return *this;};
+	JString operator+(wchar_t value) {append(value); return *this;};
+	JString operator+(char value) {append(value); return *this;};
+
+	wchar_t operator[](size_t index) const {assert(index < m_Length); retur=
n m_Data[index];}
+	char operator[](size_t index) {assert(index < m_Length); _UpdateASCII()=
; return m_DataASCII[index];}
+
+	operator const wchar_t*() const {return c_str();}	=09
+
+protected:
+	/// Function to clear all the data, (for consuctor only)
+	inline void _Initialize();
+	/// Checks if the ASCII copy of the data needs to be updated
+	void _UpdateASCII();=09
+	//void _Set(const JString &value);
+	inline void _Set(const wchar_t *value);
+	inline void _Set(const char *value);
+	inline void _Set(const wchar_t value);
+	inline void _Set(const char value);
+	void _Set(const binary *value);
+
+	/// Get the length of a NULL-terminated string, being simple 1-line loo=
ps these can benfit from inlining
+	//inline static size_t strlen(const wchar_t *str);
+	//inline static size_t strlen(const char *str);
+	/// Removes (trims) leading whitespace characters from a string
+	static wchar_t *wslefttrim(wchar_t *source);
+	/// Removes (trims) trailing whitespace characters from a string
+	static wchar_t *wsrighttrim(wchar_t *source);
+
+	/// The string data itself
+	wchar_t *m_Data;
+	/// Flag true if ASCII data needs to be updated
+	bool m_bUpdateASCII;
+	/// ASCII version of data
+	char *m_DataASCII;
+	/// Length of the string, cached to faster access
+	unsigned long m_Length;
+=09
+	/// Line break type
+	enum LineBreakType m_lineBreak;
+
+	/// String Data class
+	/*class JStringData {
+	public:
+		JStringData() {
+			m_Data =3D NULL;
+			m_DataASCII =3D NULL;
+			m_Length =3D 0;
+			m_RefCount =3D 0;
+		};
+		~JStringData() {
+			delete m_Data;
+			delete m_DataASCII;
+		};
+		unsigned short AddRef() { return ++m_RefCount; }
+		unsigned short Release() {=20
+			if (--m_RefCount)
+				return m_RefCount;
+
+			delete this;
+			return 0;
+		};
+	=09
+		/// The string data itself
+		wchar_t *m_Data;
+		/// Flag true if ASCII data needs to be updated
+		bool m_bUpdateASCII;
+		/// ASCII version of data
+		char *m_DataASCII;
+		/// Length of the string, cached to faster access
+		unsigned long m_Length;	=09
+	protected:
+		unsigned short m_RefCount;
+	};
+	JStringData *m_JData;*/
+	/// UTF-8 to Unicode conversion class
+	class UTF8toUCS4 {
+	public:
+		enum { // return codes from put.
+			need_more =3D 0,
+			complete_code,
+			invalid_code,
+		};
+		UTF8toUCS4() : m_code(0), m_shift(0), m_mval(0) {}
+
+		/// reset the statemachine.
+		void reset() { m_code =3D m_shift =3D m_mval =3D 0; }
+
+		/// Read a byte and convert it, if we have a complete code we place it=
 in val and return complete_code.
+		/// otherwise, if any error we return invalid_code and do not modify s=
tate.
+		/// otherwise if no error we update state and return need_more.
+		int Convert(binary uc, uint64 & val);
+
+	protected:
+		/// the code we are currently building.
+		int m_code;
+		/// how much to shift in the next bits.
+		int m_shift;
+		/// minimum value.
+		int m_mval;=20
+	};
+};
+
+class SmartStringFormat : public std::wostringstream
+{
+public:
+	SmartStringFormat();
+	SmartStringFormat(const SmartStringFormat& copy);
+	~SmartStringFormat();
+
+	SmartStringFormat & operator << (const char *inStr);
+	SmartStringFormat & operator << (double value);
+	SmartStringFormat & operator << (float value);
+	SmartStringFormat & operator << (int16 value);
+	SmartStringFormat & operator << (int32 value);
+	SmartStringFormat & operator << (int64 value);
+	SmartStringFormat & operator << (uint16 value);
+	SmartStringFormat & operator << (uint32 value);
+	SmartStringFormat & operator << (uint64 value);
+
+protected:
+	wchar_t *m_TextBuffer;
+	unsigned long m_TextBufferSize;
+};
+
+#endif //_JSTRING_H_


Property changes on: trunk/MatroskaUtils/JString.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MP3TagReader.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MP3TagReader.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/MP3TagReader.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,66 +1,66 @@
-/*
- *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
- *
- *  MP3TagReader.h
- *
- *  Copyright (C) Jory Stone - 2003
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file AviTagReader.h
-		\version \$Id: MP3TagReader.h,v 1.3 2004/02/09 23:14:14 jcsston Exp $
-    \brief A MP3 ID3 Tag Importer
-		\author Jory Stone     <jcsston @ toughguy.net>
-
-*/
-
-#ifndef _MP3_TAG_READER_H_
-#define _MP3_TAG_READER_H_
-
-#include "TagReader.h"
-#include <time.h>
-#include "MatroskaUtilsReader.h"
-
-#ifdef USING_ID3LIB
-// Dll link
-#define ID3LIB_LINKOPTION 3
-// Static link
-//#define ID3LIB_LINKOPTION 1
-
-#include <id3/tag.h>
-//#include "id3.h"
-#endif
-
-class MP3TagReader : public TagReader {
-public:
-	MP3TagReader(const JString &filename);
-	~MP3TagReader();
-
-	void ReadFile(const JString &filename);
-	bool HasTags();
-	void ImportTags(MatroskaTagInfo *target);
-
-protected:
-	JString m_MP3Filename;=09
-
-#ifdef USING_ID3LIB
-	ID3_Tag m_Tag;
-#endif
-};
-
-#endif // _MP3_TAG_READER_H_
+/*
+ *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
+ *
+ *  MP3TagReader.h
+ *
+ *  Copyright (C) Jory Stone - 2003
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file AviTagReader.h
+		\version \$Id: MP3TagReader.h,v 1.3 2004/02/09 23:14:14 jcsston Exp $
+    \brief A MP3 ID3 Tag Importer
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+#ifndef _MP3_TAG_READER_H_
+#define _MP3_TAG_READER_H_
+
+#include "TagReader.h"
+#include <time.h>
+#include "MatroskaUtilsReader.h"
+
+#ifdef USING_ID3LIB
+// Dll link
+#define ID3LIB_LINKOPTION 3
+// Static link
+//#define ID3LIB_LINKOPTION 1
+
+#include <id3/tag.h>
+//#include "id3.h"
+#endif
+
+class MP3TagReader : public TagReader {
+public:
+	MP3TagReader(const JString &filename);
+	~MP3TagReader();
+
+	void ReadFile(const JString &filename);
+	bool HasTags();
+	void ImportTags(MatroskaTagInfo *target);
+
+protected:
+	JString m_MP3Filename;=09
+
+#ifdef USING_ID3LIB
+	ID3_Tag m_Tag;
+#endif
+};
+
+#endif // _MP3_TAG_READER_H_


Property changes on: trunk/MatroskaUtils/MP3TagReader.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaCDL/CDLApi.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaCDL/CDLApi.h	2007-02-17 10:34:40 UTC (rev=
 1276)
+++ trunk/MatroskaUtils/MatroskaCDL/CDLApi.h	2007-02-17 10:55:54 UTC (rev=
 1277)
@@ -1,321 +1,321 @@
-// ---------------------------------------------------------------------=
-------
-// Core Dynamic Library - Plugin framework for The Core Media Player
-//
-//      http://www.corecoded.com - http://www.corecodec.com
-//     Actually used to control the player using the CDL API
-//                     CDL API Version 1.01 (101)
-//
-//                          (C/C++ header)
-//
-// Ok, here we goes, the SDK for TCMP, just for you, so you can make the=
 player
-// even better! Very easy to use, you shouldn't have any problems using =
it.
-// While I'm trying to make this SDK, I may forget to bind some function=
s that
-// you will need while developing your CDL, or if you have some kick-ass=
 ideas
-// there is some good chances that I will add them to the CDL SDK. Come =
on our
-// sweet forum and post your wishes!
-//
-// I hesitated between writing a documentation and commenting the CDL he=
ader,
-// as you can see I choose the 2nd option for my health. You can find a =
lot of
-// informations in CDL_Howto.txt
-// Don't forget: have fun while coding!
-//
-//  CoreCodec SDK license:
-//  Copyright (c) 2001-2002 CoreCodec, Inc.
-//
-//    This software is provided 'as-is', without any express or implied
-//    warranty.  In no event will the authors be held liable for any dam=
ages
-//    arising from the use of this software.
-//
-//    Permission is granted to anyone to use this software for any purpo=
se,
-//    including commercial applications, and to alter it and redistribut=
e it
-//    freely, subject to the following restrictions:
-//
-//    1. The origin of this software must not be misrepresented; you mus=
t not
-//       claim that you wrote the original software. If you use this sof=
tware
-//       in a product, an acknowledgment in the product documentation wo=
uld be
-//       appreciated but is not required.
-//    2. Altered source versions must be plainly marked as such, and mus=
t not be
-//       misrepresented as being the original software.
-//    3. This notice may not be removed or altered from any source distr=
ibution.
-//
-//
-// Ludovic 'BlackSun' Vialle, CoreCodec Lead-developer.
-// C/C++ Conversion by Christophe 'Toff' PARIS
-// This version was modifed by Jory 'jcsston' Stone to attempt support f=
or v1.01 of the CDL API
-//=20
-// ---------------------------------------------------------------------=
-------
-#ifndef _CDLAPI_H_
-#define _CDLAPI_H_
-// ---------------------------------------------------------------------=
-------
-
-#include <windows.h>
-
-// ---------------------------------------------------------------------=
-------
-
-#define CDL_API_CALL        __stdcall
-
-// ---------------------------------------------------------------------=
-------
-
-#ifdef __cplusplus
-#define CDL_API_EXPORT      extern "C" __declspec(dllexport)
-#else
-#define CDL_API_EXPORT      __declspec(dllexport)
-#endif=20
-
-// ---------------------------------------------------------------------=
-------
-
-// Error and success codes for the plugin initialization
-#define CORE_OK                 1       // Your CDL is loaded
-#define CORE_NOT_OK             10      // Report this if you don't want=
 to be loaded
-
-// Events notification codes
-#define CORE_FILELOADING        601     // A file is loading (Param1 =3D=
=3D filename)
-#define CORE_FILELOADED         602     // TCMP is done with loading the=
 file (Param1 =3D=3D filename)
-#define CORE_FILECLOSED         603     // TCMP is closing the file (no =
params) (also used for state)
-
-#define CORE_FILEPLAY           610     // Playback state (no params)
-#define CORE_FILEPAUSE          611     // Playback state (no params)
-#define CORE_FILESTOP           612     // Playback state (no params)
-#define CORE_FULLSCREEN         615     // Fullscreen mode change (Param=
2:  0 =3D=3D false or 1 =3D=3D true)
-#define CORE_FILESEEK           616     // Seeking in the file
-#define CORE_VIDEOSIZECHANGE    617     // Video size change
-
-// Plugins flags (what the plugin support)
-#define CORE_NOFLAG             0x0
-#define CORE_SHOWWINDOW         0x10    // ShowWindow event
-#define CORE_SHORTCUTEXEC       0x20    // ShortcutExec event
-#define CORE_MEDIAPROPEXEC      0x40    // MediaPropExec event
-#define CORE_EVENTHANDLER       0x80    // EventHandler event
-#define CORE_READTAGS           0x100   // ReadTags event (API v101)
-#define CORE_WRITETAGS          0x200   // WriteTags event (API v101)
-
-// ---------------------------------------------------------------------=
-------
-
-// -- Your exports/functions --
-typedef struct
-{
-    char* MediaType;
-    char* TagList;
-    char* Title;
-    char* Artist;
-    char* Album;
-    short Track;
-    int Year;
-    char* Genre;
-    int Bitrate; // Mainly used for audio, express it in KB/s
-    short Rating; // User rating from 1 to 10
-    char* Extension; // File extension in UPPERCASE without the dot (ie:=
 "MP3")
-    char* Codec; // ie: "DivX 6.0"
-    char* EncodingStyle; // ie: "VBR" or "SV8"
-    char* Comment;
-    char* Extended; // supplementary metadata, in an XML like presentati=
on <compositor>W.A.Mozart</compositor>
-}	CDL_Metadata, *PCDL_Metadata;
-
-
-typedef struct
-{
-    // version of your CDL (ie: '1.0 alpha')
-    char* version;
-    // The name of your CDL
-    char* name;
-    // Proc called when the player init your plugin
-    int (CDL_API_CALL *LoadProc)(int version);
-    // Proc called when the user want to configure your CDL
-    // You may just show an about box if you hijacked your settings
-    // (you can use hwndParent)
-    void (CDL_API_CALL *ConfigProc)(void);
-    // Called when the player unload your CDL
-    void (CDL_API_CALL *UnloadProc)(void);
-    // The player give its handle in hwndParent
-    HWND hwndParent;
-    // Set the plugins caps. ie: CORE_SHOWWINDOW | CORE_EVENTHANDLER
-    DWORD dwflags;
-    // -- the following functions aren't mandatory --
-    // If a registered window is selected, the player ask you if you are
-    // the owner, return true if this is the case, otherwise return fals=
e.
-    BOOL (CDL_API_CALL *ShowWindow)(GUID ID);
-    // Same, but with a shortcut
-    BOOL (CDL_API_CALL *ShortcutExec)(GUID ID);
-    // The player ask you if you want to add your tab to the media prope=
rties
-    // the filename is sent so you can open it to read the tags for exam=
ple.
-    // Return a string with the title, or an empty string.
-    char* (CDL_API_CALL *MediaPropExec)(char* Filename);
-    // Event handler. TCMP will notify you of the most important events
-    // Depending of the event, the player may send you a parameter, it c=
an be
-    // a string (Param1 ('' =3D=3D null) or an integer (Param2 (-1 =3D=3D=
 null)
-    void (CDL_API_CALL *EventHandler)(int Event, char* Param1, int Param=
2);
-    // This API is used by TCMP to get some standard tags from a file, i=
t will be used
-    // for the playlist and the medialib. (API v101)
-    void (CDL_API_CALL *ReadTags)(char *Filename, CDL_Metadata& Metadata=
);
-    // Same as the previous one, but TCMP will ask you to write the tags=
, use the prefered
-    // tag format. (API v101)
-    void (CDL_API_CALL *WriteTags)(char *Filename, CDL_Metadata Metadata=
);
-
-} CDL_PluginHeader, *PCDL_PluginHeader;
-
-// ---------------------------------------------------------------------=
-------
-
-// -- The Core Media Player exports/functions at your service --
-typedef struct
-{
-    // Get the CDL version supported by the player
-    int (CDL_API_CALL *CDL_GetVersion)(void);
-    // Popup a OpenDialog box, with your filter and return the filename
-    // return an empty string if the user pressed cancel.
-    char* (CDL_API_CALL *CDL_OpenDialog)(char* filter);
-    // Same with a SaveDialog box
-    char* (CDL_API_CALL *CDL_SaveDialog)(char* filter);
-    // Load a file, can be a video, audio or subtitles or a video_ts.ifo
-    // if the version of the player allow it.
-    void (CDL_API_CALL *CDL_LoadFile)(char* filename);  =20
-    // Get the filename of the current opened file
-    char* (CDL_API_CALL *CDL_GetFilename)(void);
-    // Previous button
-    void (CDL_API_CALL *CDL_PreviousItem)(void);
-    // Next button
-    void (CDL_API_CALL *CDL_NextItem)(void);
-    // Play/Pause toggle button
-    void (CDL_API_CALL *CDL_PlayPause)(void);
-    // Stop button
-    void (CDL_API_CALL *CDL_Stop)(void);
-    // Get or set the current position. Don't call it every ms or you'll
-    // overload the cpu :) The time is returned in milliseconds.
-    int (CDL_API_CALL *CDL_GetPosition)(void);
-    void (CDL_API_CALL *CDL_SetPosition)(int position);
-    // Get  the duration of the opened file in milliseconds
-    int (CDL_API_CALL *CDL_GetDuration)(void);  =20
-    // Get or set the volume value. min: -10000, max: 0 (log)
-    int (CDL_API_CALL *CDL_GetVolume)(void);
-    void (CDL_API_CALL *CDL_SetVolume)(int position);
-    // Move the volume slider of the player up or down
-    void (CDL_API_CALL *CDL_VolumeUp)(void);
-    void (CDL_API_CALL *CDL_VolumeDown)(void);  =20
-    // Seek to the previous or next bookmark
-    void (CDL_API_CALL *CDL_PreviousBookmark)(void);
-    void (CDL_API_CALL *CDL_NextBookmark)(void);
-    // Jump backward or forward (seeking method)
-    void (CDL_API_CALL *CDL_JumpBackward)(void);
-    void (CDL_API_CALL *CDL_JumpForward)(void);
-    // Retrieve or set the fullscreen mode (boolean)
-    BOOL (CDL_API_CALL *CDL_GetFullScreen)(void);
-    void (CDL_API_CALL *CDL_SetFullScreen)(void);
-    // DVD/PDM and futur Menu navigation procs
-    void (CDL_API_CALL *CDL_MenuUp)(void);
-    void (CDL_API_CALL *CDL_MenuDown)(void);
-    void (CDL_API_CALL *CDL_MenuLeft)(void);
-    void (CDL_API_CALL *CDL_MenuRight)(void);
-    void (CDL_API_CALL *CDL_MenuSelect)(void);
-    // Call the DVD menus
-    void (CDL_API_CALL *CDL_DVDRootMenu)(void);
-    void (CDL_API_CALL *CDL_DVDAudioMenu)(void);
-    void (CDL_API_CALL *CDL_DVDTitleMenu)(void);
-    void (CDL_API_CALL *CDL_DVDSubpicMenu)(void);
-    void (CDL_API_CALL *CDL_DVDAngleMenu)(void);
-    // Cycle display aspect ratio
-    void (CDL_API_CALL *CDL_CycleDAR)(void);
-    // Cycle the audio streams
-    void (CDL_API_CALL *CDL_CycleAudio)(void);
-    // Cycle the subtitles streams/files (apply with Nefertiti)
-    void (CDL_API_CALL *CDL_CycleSub)(void);
-    // Get or set the repeat state
-    BOOL (CDL_API_CALL *CDL_GetRepeat)(void);
-    void (CDL_API_CALL *CDL_SetRepeat)(void);
-    // Get or set the shuffle state
-    BOOL (CDL_API_CALL *CDL_GetShuffle)(void);
-    void (CDL_API_CALL *CDL_SetShuffle)(void);
-    // Get the video height or width. Take in count the modified size
-    // (ie: fullscreen or modified AR)
-    int (CDL_API_CALL *CDL_GetVideoHeight)(void);
-    int (CDL_API_CALL *CDL_GetVideoWidth)(void);
-    // Set a new size. The video is automatically centered
-    void (CDL_API_CALL *CDL_SetVideoSize)(int height, int width);
-    // Set the PanScan value. From 25% to 400%
-    int (CDL_API_CALL *CDL_GetPanScan)(void);
-    void (CDL_API_CALL *CDL_SetPanScan)(int percent);
-    // Set a new Display Aspect Ratio
-    void (CDL_API_CALL *CDL_SetDAR)(int RatioC, int RatioD);
-    // Set a new Pixels Aspect Ratio
-    void (CDL_API_CALL *CDL_SetPAR)(int RatioC, int RatioD);
-    // Reset the video to the default aspect ratio/size
-    void (CDL_API_CALL *CDL_ResetVideoSize)(void);
-    // Write something (maybe funny) on the OSD
-    void (CDL_API_CALL *CDL_WriteToOSD)(char* mytext);
-    // Retrieve or set the scrolling text of the main player
-    char* (CDL_API_CALL *CDL_GetScrollText)(void);
-    void (CDL_API_CALL *CDL_SetScrollText)(char* mytext);
-    // Load or save a Nefertiti playlist (XML)
-    void (CDL_API_CALL *CDL_LoadPlaylist)(char* filename);
-    void (CDL_API_CALL *CDL_SavePlaylist)(char* filename);
-    // Get the itemindex of the current file playing from the
-    // playlist. (base 0)
-    int (CDL_API_CALL *CDL_GetPlayingItem)(void);
-    // Get the playlist items count
-    int (CDL_API_CALL *CDL_GetItemsCount)(void);
-    // Play an item from the playlist
-    void (CDL_API_CALL *CDL_PlayItem)(int itemindex);
-    // Retrieve the title from the playlist item
-    char* (CDL_API_CALL *CDL_GetItemTitle)(int itemindex);
-    // Retrieve the filename from the playlist item
-    char* (CDL_API_CALL *CDL_GetItemFilename)(int itemindex);
-    // Select an item in the playlist. This does not unselect the curren=
t
-    // selected items, so you may need CDL_ItemsClearSel
-    void (CDL_API_CALL *CDL_SelectItem)(int itemindex);
-    // Clear the playlist selection
-    void (CDL_API_CALL *CDL_ItemsClearSel)(void);
-    // Add a file to the playlist
-    void (CDL_API_CALL *CDL_AddItem)(char* filename);
-    // Delete the selected items
-    void (CDL_API_CALL *CDL_DeleteItems)(void);
-    // Get or set Equalizer state
-    BOOL (CDL_API_CALL *CDL_GetEQState)(void);
-    void (CDL_API_CALL *CDL_SetEQState)(BOOL enabled);
-    // Get or set DRC value: Min: 300 (0 dB), Max: 0 (30 dB)
-    int (CDL_API_CALL *CDL_GetEQDRC)(void);
-    void (CDL_API_CALL *CDL_SetEQDRC)(int nvalue);
-    // Get or set the equalizer bands: Min: 100 (-15 dB), Max: 0 (+15dB)
-    // Default is of course 100. 1st param is the band (0 to 8)
-    int (CDL_API_CALL *CDL_GetEQBand)(int Band);
-    void (CDL_API_CALL *CDL_SetEQBand)(int Band, int nvalue);
-    // Ask the player to hijack your config dialog in the options box
-    // 1st param is the handle of your window, the 2nd is the caption
-    void (CDL_API_CALL *CDL_HijackMe)(HWND myHwnd, char* Name);
-    // Same but it will be a child to last non-children hijacked dialog
-    void (CDL_API_CALL *CDL_HijackMyChild)(HWND myHwnd, char* ChildName)=
;
-    // Register a window in the player windows submenu list. You have to=
 provide
-    // a Global Unique ID. Check CDL_Howto.txt for further details.
-    void (CDL_API_CALL *CDL_RegisterWindow)(char* Description, GUID WinI=
D);
-    // Same, but with a shortcut
-    void (CDL_API_CALL *CDL_RegisterShortcut)(char *Description, GUID Wi=
nID);
-    // Request a tab in the media properties, check CDL_Howto.txt for a =
complete guide
-    void (CDL_API_CALL *CDL_AddMediaTab)(char* Description, HWND myHWND)=
;
-    // Write something to the console
-    void (CDL_API_CALL *CDL_WriteToConsole)(char* mytext);
-    // Get the current playback state
-    // (CORE_FILEPLAY, CORE_FILEPAUSE, CORE_FILESTOP and CORE_FILECLOSED=
)
-    int (CDL_API_CALL *CDL_GetPlayState)(void);
-    // Get a pointer to the DirectShow IGraphBuilder COM object.
-    // Read CDL_Howto.txt for more details (recommended)
-    void* (CDL_API_CALL *CDL_GetDSGraph)(void);
-    // Add a subtitle extension to the player's opendialog filter
-    // use caps, ie: '.SUB'. Read CDL_Howto.txt to know how to add a new=
 subtitle format.
-    void (CDL_API_CALL *CDL_AddSubExt)(char* Ext);
-    // Draw a subtitle line, duration is in milliseconds
-    void (CDL_API_CALL *CDL_DrawXMLSub)(char* Text, int Duration);
-    // Clear last XML subtitle
-    void (CDL_API_CALL *CDL_ClearXMLSub)(void);
-    // Clear the whole screen except OSD
-    void (CDL_API_CALL *CDL_ClearAllXMLSub)(void);
-    // Get the metadata. They are filled just after the CORE_FILELOADING=
 event by CDL
-    // that support MediaPropExec2 (API v101)
-		void (CDL_API_CALL *CDL_GetMetadata)(CDL_Metadata *meta);
-	  // Notify a CCAS filter that it should update it settings. The Settin=
gs pointer is
-    // pointing to a structure of your choice or whatever you want
-    void (CDL_API_CALL *CDL_NotifyCCASUpdate)(GUID CCASID, void *Setting=
s);
-#ifdef _DEBUG
-		DWORD fnpBuffer[64];
-#endif
-} CDL_CoreHeader, *PCDL_CoreHeader;
-
-// ---------------------------------------------------------------------=
-------
-#endif
-// ---------------------------------------------------------------------=
-------
+// ---------------------------------------------------------------------=
-------
+// Core Dynamic Library - Plugin framework for The Core Media Player
+//
+//      http://www.corecoded.com - http://www.corecodec.com
+//     Actually used to control the player using the CDL API
+//                     CDL API Version 1.01 (101)
+//
+//                          (C/C++ header)
+//
+// Ok, here we goes, the SDK for TCMP, just for you, so you can make the=
 player
+// even better! Very easy to use, you shouldn't have any problems using =
it.
+// While I'm trying to make this SDK, I may forget to bind some function=
s that
+// you will need while developing your CDL, or if you have some kick-ass=
 ideas
+// there is some good chances that I will add them to the CDL SDK. Come =
on our
+// sweet forum and post your wishes!
+//
+// I hesitated between writing a documentation and commenting the CDL he=
ader,
+// as you can see I choose the 2nd option for my health. You can find a =
lot of
+// informations in CDL_Howto.txt
+// Don't forget: have fun while coding!
+//
+//  CoreCodec SDK license:
+//  Copyright (c) 2001-2002 CoreCodec, Inc.
+//
+//    This software is provided 'as-is', without any express or implied
+//    warranty.  In no event will the authors be held liable for any dam=
ages
+//    arising from the use of this software.
+//
+//    Permission is granted to anyone to use this software for any purpo=
se,
+//    including commercial applications, and to alter it and redistribut=
e it
+//    freely, subject to the following restrictions:
+//
+//    1. The origin of this software must not be misrepresented; you mus=
t not
+//       claim that you wrote the original software. If you use this sof=
tware
+//       in a product, an acknowledgment in the product documentation wo=
uld be
+//       appreciated but is not required.
+//    2. Altered source versions must be plainly marked as such, and mus=
t not be
+//       misrepresented as being the original software.
+//    3. This notice may not be removed or altered from any source distr=
ibution.
+//
+//
+// Ludovic 'BlackSun' Vialle, CoreCodec Lead-developer.
+// C/C++ Conversion by Christophe 'Toff' PARIS
+// This version was modifed by Jory 'jcsston' Stone to attempt support f=
or v1.01 of the CDL API
+//=20
+// ---------------------------------------------------------------------=
-------
+#ifndef _CDLAPI_H_
+#define _CDLAPI_H_
+// ---------------------------------------------------------------------=
-------
+
+#include <windows.h>
+
+// ---------------------------------------------------------------------=
-------
+
+#define CDL_API_CALL        __stdcall
+
+// ---------------------------------------------------------------------=
-------
+
+#ifdef __cplusplus
+#define CDL_API_EXPORT      extern "C" __declspec(dllexport)
+#else
+#define CDL_API_EXPORT      __declspec(dllexport)
+#endif=20
+
+// ---------------------------------------------------------------------=
-------
+
+// Error and success codes for the plugin initialization
+#define CORE_OK                 1       // Your CDL is loaded
+#define CORE_NOT_OK             10      // Report this if you don't want=
 to be loaded
+
+// Events notification codes
+#define CORE_FILELOADING        601     // A file is loading (Param1 =3D=
=3D filename)
+#define CORE_FILELOADED         602     // TCMP is done with loading the=
 file (Param1 =3D=3D filename)
+#define CORE_FILECLOSED         603     // TCMP is closing the file (no =
params) (also used for state)
+
+#define CORE_FILEPLAY           610     // Playback state (no params)
+#define CORE_FILEPAUSE          611     // Playback state (no params)
+#define CORE_FILESTOP           612     // Playback state (no params)
+#define CORE_FULLSCREEN         615     // Fullscreen mode change (Param=
2:  0 =3D=3D false or 1 =3D=3D true)
+#define CORE_FILESEEK           616     // Seeking in the file
+#define CORE_VIDEOSIZECHANGE    617     // Video size change
+
+// Plugins flags (what the plugin support)
+#define CORE_NOFLAG             0x0
+#define CORE_SHOWWINDOW         0x10    // ShowWindow event
+#define CORE_SHORTCUTEXEC       0x20    // ShortcutExec event
+#define CORE_MEDIAPROPEXEC      0x40    // MediaPropExec event
+#define CORE_EVENTHANDLER       0x80    // EventHandler event
+#define CORE_READTAGS           0x100   // ReadTags event (API v101)
+#define CORE_WRITETAGS          0x200   // WriteTags event (API v101)
+
+// ---------------------------------------------------------------------=
-------
+
+// -- Your exports/functions --
+typedef struct
+{
+    char* MediaType;
+    char* TagList;
+    char* Title;
+    char* Artist;
+    char* Album;
+    short Track;
+    int Year;
+    char* Genre;
+    int Bitrate; // Mainly used for audio, express it in KB/s
+    short Rating; // User rating from 1 to 10
+    char* Extension; // File extension in UPPERCASE without the dot (ie:=
 "MP3")
+    char* Codec; // ie: "DivX 6.0"
+    char* EncodingStyle; // ie: "VBR" or "SV8"
+    char* Comment;
+    char* Extended; // supplementary metadata, in an XML like presentati=
on <compositor>W.A.Mozart</compositor>
+}	CDL_Metadata, *PCDL_Metadata;
+
+
+typedef struct
+{
+    // version of your CDL (ie: '1.0 alpha')
+    char* version;
+    // The name of your CDL
+    char* name;
+    // Proc called when the player init your plugin
+    int (CDL_API_CALL *LoadProc)(int version);
+    // Proc called when the user want to configure your CDL
+    // You may just show an about box if you hijacked your settings
+    // (you can use hwndParent)
+    void (CDL_API_CALL *ConfigProc)(void);
+    // Called when the player unload your CDL
+    void (CDL_API_CALL *UnloadProc)(void);
+    // The player give its handle in hwndParent
+    HWND hwndParent;
+    // Set the plugins caps. ie: CORE_SHOWWINDOW | CORE_EVENTHANDLER
+    DWORD dwflags;
+    // -- the following functions aren't mandatory --
+    // If a registered window is selected, the player ask you if you are
+    // the owner, return true if this is the case, otherwise return fals=
e.
+    BOOL (CDL_API_CALL *ShowWindow)(GUID ID);
+    // Same, but with a shortcut
+    BOOL (CDL_API_CALL *ShortcutExec)(GUID ID);
+    // The player ask you if you want to add your tab to the media prope=
rties
+    // the filename is sent so you can open it to read the tags for exam=
ple.
+    // Return a string with the title, or an empty string.
+    char* (CDL_API_CALL *MediaPropExec)(char* Filename);
+    // Event handler. TCMP will notify you of the most important events
+    // Depending of the event, the player may send you a parameter, it c=
an be
+    // a string (Param1 ('' =3D=3D null) or an integer (Param2 (-1 =3D=3D=
 null)
+    void (CDL_API_CALL *EventHandler)(int Event, char* Param1, int Param=
2);
+    // This API is used by TCMP to get some standard tags from a file, i=
t will be used
+    // for the playlist and the medialib. (API v101)
+    void (CDL_API_CALL *ReadTags)(char *Filename, CDL_Metadata& Metadata=
);
+    // Same as the previous one, but TCMP will ask you to write the tags=
, use the prefered
+    // tag format. (API v101)
+    void (CDL_API_CALL *WriteTags)(char *Filename, CDL_Metadata Metadata=
);
+
+} CDL_PluginHeader, *PCDL_PluginHeader;
+
+// ---------------------------------------------------------------------=
-------
+
+// -- The Core Media Player exports/functions at your service --
+typedef struct
+{
+    // Get the CDL version supported by the player
+    int (CDL_API_CALL *CDL_GetVersion)(void);
+    // Popup a OpenDialog box, with your filter and return the filename
+    // return an empty string if the user pressed cancel.
+    char* (CDL_API_CALL *CDL_OpenDialog)(char* filter);
+    // Same with a SaveDialog box
+    char* (CDL_API_CALL *CDL_SaveDialog)(char* filter);
+    // Load a file, can be a video, audio or subtitles or a video_ts.ifo
+    // if the version of the player allow it.
+    void (CDL_API_CALL *CDL_LoadFile)(char* filename);  =20
+    // Get the filename of the current opened file
+    char* (CDL_API_CALL *CDL_GetFilename)(void);
+    // Previous button
+    void (CDL_API_CALL *CDL_PreviousItem)(void);
+    // Next button
+    void (CDL_API_CALL *CDL_NextItem)(void);
+    // Play/Pause toggle button
+    void (CDL_API_CALL *CDL_PlayPause)(void);
+    // Stop button
+    void (CDL_API_CALL *CDL_Stop)(void);
+    // Get or set the current position. Don't call it every ms or you'll
+    // overload the cpu :) The time is returned in milliseconds.
+    int (CDL_API_CALL *CDL_GetPosition)(void);
+    void (CDL_API_CALL *CDL_SetPosition)(int position);
+    // Get  the duration of the opened file in milliseconds
+    int (CDL_API_CALL *CDL_GetDuration)(void);  =20
+    // Get or set the volume value. min: -10000, max: 0 (log)
+    int (CDL_API_CALL *CDL_GetVolume)(void);
+    void (CDL_API_CALL *CDL_SetVolume)(int position);
+    // Move the volume slider of the player up or down
+    void (CDL_API_CALL *CDL_VolumeUp)(void);
+    void (CDL_API_CALL *CDL_VolumeDown)(void);  =20
+    // Seek to the previous or next bookmark
+    void (CDL_API_CALL *CDL_PreviousBookmark)(void);
+    void (CDL_API_CALL *CDL_NextBookmark)(void);
+    // Jump backward or forward (seeking method)
+    void (CDL_API_CALL *CDL_JumpBackward)(void);
+    void (CDL_API_CALL *CDL_JumpForward)(void);
+    // Retrieve or set the fullscreen mode (boolean)
+    BOOL (CDL_API_CALL *CDL_GetFullScreen)(void);
+    void (CDL_API_CALL *CDL_SetFullScreen)(void);
+    // DVD/PDM and futur Menu navigation procs
+    void (CDL_API_CALL *CDL_MenuUp)(void);
+    void (CDL_API_CALL *CDL_MenuDown)(void);
+    void (CDL_API_CALL *CDL_MenuLeft)(void);
+    void (CDL_API_CALL *CDL_MenuRight)(void);
+    void (CDL_API_CALL *CDL_MenuSelect)(void);
+    // Call the DVD menus
+    void (CDL_API_CALL *CDL_DVDRootMenu)(void);
+    void (CDL_API_CALL *CDL_DVDAudioMenu)(void);
+    void (CDL_API_CALL *CDL_DVDTitleMenu)(void);
+    void (CDL_API_CALL *CDL_DVDSubpicMenu)(void);
+    void (CDL_API_CALL *CDL_DVDAngleMenu)(void);
+    // Cycle display aspect ratio
+    void (CDL_API_CALL *CDL_CycleDAR)(void);
+    // Cycle the audio streams
+    void (CDL_API_CALL *CDL_CycleAudio)(void);
+    // Cycle the subtitles streams/files (apply with Nefertiti)
+    void (CDL_API_CALL *CDL_CycleSub)(void);
+    // Get or set the repeat state
+    BOOL (CDL_API_CALL *CDL_GetRepeat)(void);
+    void (CDL_API_CALL *CDL_SetRepeat)(void);
+    // Get or set the shuffle state
+    BOOL (CDL_API_CALL *CDL_GetShuffle)(void);
+    void (CDL_API_CALL *CDL_SetShuffle)(void);
+    // Get the video height or width. Take in count the modified size
+    // (ie: fullscreen or modified AR)
+    int (CDL_API_CALL *CDL_GetVideoHeight)(void);
+    int (CDL_API_CALL *CDL_GetVideoWidth)(void);
+    // Set a new size. The video is automatically centered
+    void (CDL_API_CALL *CDL_SetVideoSize)(int height, int width);
+    // Set the PanScan value. From 25% to 400%
+    int (CDL_API_CALL *CDL_GetPanScan)(void);
+    void (CDL_API_CALL *CDL_SetPanScan)(int percent);
+    // Set a new Display Aspect Ratio
+    void (CDL_API_CALL *CDL_SetDAR)(int RatioC, int RatioD);
+    // Set a new Pixels Aspect Ratio
+    void (CDL_API_CALL *CDL_SetPAR)(int RatioC, int RatioD);
+    // Reset the video to the default aspect ratio/size
+    void (CDL_API_CALL *CDL_ResetVideoSize)(void);
+    // Write something (maybe funny) on the OSD
+    void (CDL_API_CALL *CDL_WriteToOSD)(char* mytext);
+    // Retrieve or set the scrolling text of the main player
+    char* (CDL_API_CALL *CDL_GetScrollText)(void);
+    void (CDL_API_CALL *CDL_SetScrollText)(char* mytext);
+    // Load or save a Nefertiti playlist (XML)
+    void (CDL_API_CALL *CDL_LoadPlaylist)(char* filename);
+    void (CDL_API_CALL *CDL_SavePlaylist)(char* filename);
+    // Get the itemindex of the current file playing from the
+    // playlist. (base 0)
+    int (CDL_API_CALL *CDL_GetPlayingItem)(void);
+    // Get the playlist items count
+    int (CDL_API_CALL *CDL_GetItemsCount)(void);
+    // Play an item from the playlist
+    void (CDL_API_CALL *CDL_PlayItem)(int itemindex);
+    // Retrieve the title from the playlist item
+    char* (CDL_API_CALL *CDL_GetItemTitle)(int itemindex);
+    // Retrieve the filename from the playlist item
+    char* (CDL_API_CALL *CDL_GetItemFilename)(int itemindex);
+    // Select an item in the playlist. This does not unselect the curren=
t
+    // selected items, so you may need CDL_ItemsClearSel
+    void (CDL_API_CALL *CDL_SelectItem)(int itemindex);
+    // Clear the playlist selection
+    void (CDL_API_CALL *CDL_ItemsClearSel)(void);
+    // Add a file to the playlist
+    void (CDL_API_CALL *CDL_AddItem)(char* filename);
+    // Delete the selected items
+    void (CDL_API_CALL *CDL_DeleteItems)(void);
+    // Get or set Equalizer state
+    BOOL (CDL_API_CALL *CDL_GetEQState)(void);
+    void (CDL_API_CALL *CDL_SetEQState)(BOOL enabled);
+    // Get or set DRC value: Min: 300 (0 dB), Max: 0 (30 dB)
+    int (CDL_API_CALL *CDL_GetEQDRC)(void);
+    void (CDL_API_CALL *CDL_SetEQDRC)(int nvalue);
+    // Get or set the equalizer bands: Min: 100 (-15 dB), Max: 0 (+15dB)
+    // Default is of course 100. 1st param is the band (0 to 8)
+    int (CDL_API_CALL *CDL_GetEQBand)(int Band);
+    void (CDL_API_CALL *CDL_SetEQBand)(int Band, int nvalue);
+    // Ask the player to hijack your config dialog in the options box
+    // 1st param is the handle of your window, the 2nd is the caption
+    void (CDL_API_CALL *CDL_HijackMe)(HWND myHwnd, char* Name);
+    // Same but it will be a child to last non-children hijacked dialog
+    void (CDL_API_CALL *CDL_HijackMyChild)(HWND myHwnd, char* ChildName)=
;
+    // Register a window in the player windows submenu list. You have to=
 provide
+    // a Global Unique ID. Check CDL_Howto.txt for further details.
+    void (CDL_API_CALL *CDL_RegisterWindow)(char* Description, GUID WinI=
D);
+    // Same, but with a shortcut
+    void (CDL_API_CALL *CDL_RegisterShortcut)(char *Description, GUID Wi=
nID);
+    // Request a tab in the media properties, check CDL_Howto.txt for a =
complete guide
+    void (CDL_API_CALL *CDL_AddMediaTab)(char* Description, HWND myHWND)=
;
+    // Write something to the console
+    void (CDL_API_CALL *CDL_WriteToConsole)(char* mytext);
+    // Get the current playback state
+    // (CORE_FILEPLAY, CORE_FILEPAUSE, CORE_FILESTOP and CORE_FILECLOSED=
)
+    int (CDL_API_CALL *CDL_GetPlayState)(void);
+    // Get a pointer to the DirectShow IGraphBuilder COM object.
+    // Read CDL_Howto.txt for more details (recommended)
+    void* (CDL_API_CALL *CDL_GetDSGraph)(void);
+    // Add a subtitle extension to the player's opendialog filter
+    // use caps, ie: '.SUB'. Read CDL_Howto.txt to know how to add a new=
 subtitle format.
+    void (CDL_API_CALL *CDL_AddSubExt)(char* Ext);
+    // Draw a subtitle line, duration is in milliseconds
+    void (CDL_API_CALL *CDL_DrawXMLSub)(char* Text, int Duration);
+    // Clear last XML subtitle
+    void (CDL_API_CALL *CDL_ClearXMLSub)(void);
+    // Clear the whole screen except OSD
+    void (CDL_API_CALL *CDL_ClearAllXMLSub)(void);
+    // Get the metadata. They are filled just after the CORE_FILELOADING=
 event by CDL
+    // that support MediaPropExec2 (API v101)
+		void (CDL_API_CALL *CDL_GetMetadata)(CDL_Metadata *meta);
+	  // Notify a CCAS filter that it should update it settings. The Settin=
gs pointer is
+    // pointing to a structure of your choice or whatever you want
+    void (CDL_API_CALL *CDL_NotifyCCASUpdate)(GUID CCASID, void *Setting=
s);
+#ifdef _DEBUG
+		DWORD fnpBuffer[64];
+#endif
+} CDL_CoreHeader, *PCDL_CoreHeader;
+
+// ---------------------------------------------------------------------=
-------
+#endif
+// ---------------------------------------------------------------------=
-------


Property changes on: trunk/MatroskaUtils/MatroskaCDL/CDLApi.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaCDL/MatroskaCDL.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaCDL/MatroskaCDL.h	2007-02-17 10:34:40 UTC=
 (rev 1276)
+++ trunk/MatroskaUtils/MatroskaCDL/MatroskaCDL.h	2007-02-17 10:55:54 UTC=
 (rev 1277)
@@ -1,95 +1,95 @@
-/*
- *  The TCMP Matroska CDL, a plugin to access extra features of Matroska=
 files with TCMP
- *
- *  MatroskaCDL.h
- *
- *  Copyright (C) Jory Stone - June 2003
- *  Copyright (C) John Cannon - 2003
- *
- *  CDL API
- *   Copyright (C) Ludovic 'BlackSun' Vialle, CoreCodec Lead-developer.
- *   Copyright (C) C/C++ Conversion by Christophe 'Toff' PARIS
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file MatroskaCDL.h
-		\version \$Id: MatroskaCDL.h,v 1.8 2003/11/19 08:13:47 jcsston Exp $
-    \brief The TCMP Matroska CDL, a plugin to access extra features of M=
atroska files with TCMP
-		\author Jory Stone     <jcsston @ toughguy.net>
-		\author John Cannon    <spyder482 @ yahoo.com>
-	=09
-		Inspired by ;) John Cannon ([email protected]) (c) 2003
-		Thanks to Toff & Blacksun for the TCMP Plugin API
-*/
-
-#if !defined(AFX_MATROSKACDL_H__8CD7AF71_FBA1_40FE_8E19_390AE5021AD1__IN=
CLUDED_)
-#define AFX_MATROSKACDL_H__8CD7AF71_FBA1_40FE_8E19_390AE5021AD1__INCLUDE=
D_
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <time.h>
-
-//Include the TCMP CDL API
-#include "CDLApi.h"
-
-#include "MatroskaPages.h"
-
-int CDL_API_CALL CDL_Load(int version);
-void CDL_API_CALL CDL_Config(void);
-void CDL_API_CALL CDL_Unload(void);
-void CDL_API_CALL CDL_EventHandler(int Event, char* Param1, int Param2);
-char* CDL_API_CALL CDL_MediaPropExec(char *Filename);
-void CDL_API_CALL CDL_ReadTags(char *Filename, CDL_Metadata &MetaData);
-void CDL_API_CALL CDL_WriteTags(char *Filename, CDL_Metadata Metadata);
-
-#define CDL_NAME "Matroska Info"
-#define CDL_VERSION "1.7"
-
-MatroskaPages *global_pagedata =3D NULL;
-
-// ---------------------------------------------------------------------=
-------
-
-CDL_PluginHeader MyCDL =3D
-{
-    CDL_VERSION,            // Our version number
-    CDL_NAME,				// Name of our plugin
-    CDL_Load,               // Point to our load function
-    CDL_Config,             // Point to our config procedure
-    CDL_Unload,             // Point to our unload procedure
-    NULL,
-	CORE_NOFLAG
-	| CORE_EVENTHANDLER=20
-	| CORE_MEDIAPROPEXEC
-	| CORE_READTAGS
-	| CORE_WRITETAGS
-	,
-    NULL,
-    NULL,
-    CDL_MediaPropExec,
-		CDL_EventHandler,
-		CDL_ReadTags,
-		CDL_WriteTags
-};
-
-PCDL_CoreHeader pCoreCDL =3D NULL;
-
-// ---------------------------------------------------------------------=
-------
-
-#endif // !defined(AFX_MATROSKACDL_H__8CD7AF71_FBA1_40FE_8E19_390AE5021A=
D1__INCLUDED_)
+/*
+ *  The TCMP Matroska CDL, a plugin to access extra features of Matroska=
 files with TCMP
+ *
+ *  MatroskaCDL.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *  Copyright (C) John Cannon - 2003
+ *
+ *  CDL API
+ *   Copyright (C) Ludovic 'BlackSun' Vialle, CoreCodec Lead-developer.
+ *   Copyright (C) C/C++ Conversion by Christophe 'Toff' PARIS
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file MatroskaCDL.h
+		\version \$Id: MatroskaCDL.h,v 1.8 2003/11/19 08:13:47 jcsston Exp $
+    \brief The TCMP Matroska CDL, a plugin to access extra features of M=
atroska files with TCMP
+		\author Jory Stone     <jcsston @ toughguy.net>
+		\author John Cannon    <spyder482 @ yahoo.com>
+	=09
+		Inspired by ;) John Cannon ([email protected]) (c) 2003
+		Thanks to Toff & Blacksun for the TCMP Plugin API
+*/
+
+#if !defined(AFX_MATROSKACDL_H__8CD7AF71_FBA1_40FE_8E19_390AE5021AD1__IN=
CLUDED_)
+#define AFX_MATROSKACDL_H__8CD7AF71_FBA1_40FE_8E19_390AE5021AD1__INCLUDE=
D_
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+
+//Include the TCMP CDL API
+#include "CDLApi.h"
+
+#include "MatroskaPages.h"
+
+int CDL_API_CALL CDL_Load(int version);
+void CDL_API_CALL CDL_Config(void);
+void CDL_API_CALL CDL_Unload(void);
+void CDL_API_CALL CDL_EventHandler(int Event, char* Param1, int Param2);
+char* CDL_API_CALL CDL_MediaPropExec(char *Filename);
+void CDL_API_CALL CDL_ReadTags(char *Filename, CDL_Metadata &MetaData);
+void CDL_API_CALL CDL_WriteTags(char *Filename, CDL_Metadata Metadata);
+
+#define CDL_NAME "Matroska Info"
+#define CDL_VERSION "1.7"
+
+MatroskaPages *global_pagedata =3D NULL;
+
+// ---------------------------------------------------------------------=
-------
+
+CDL_PluginHeader MyCDL =3D
+{
+    CDL_VERSION,            // Our version number
+    CDL_NAME,				// Name of our plugin
+    CDL_Load,               // Point to our load function
+    CDL_Config,             // Point to our config procedure
+    CDL_Unload,             // Point to our unload procedure
+    NULL,
+	CORE_NOFLAG
+	| CORE_EVENTHANDLER=20
+	| CORE_MEDIAPROPEXEC
+	| CORE_READTAGS
+	| CORE_WRITETAGS
+	,
+    NULL,
+    NULL,
+    CDL_MediaPropExec,
+		CDL_EventHandler,
+		CDL_ReadTags,
+		CDL_WriteTags
+};
+
+PCDL_CoreHeader pCoreCDL =3D NULL;
+
+// ---------------------------------------------------------------------=
-------
+
+#endif // !defined(AFX_MATROSKACDL_H__8CD7AF71_FBA1_40FE_8E19_390AE5021A=
D1__INCLUDED_)


Property changes on: trunk/MatroskaUtils/MatroskaCDL/MatroskaCDL.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaChapterData.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaChapterData.h	2007-02-17 10:34:40 UTC (re=
v 1276)
+++ trunk/MatroskaUtils/MatroskaChapterData.h	2007-02-17 10:55:54 UTC (re=
v 1277)
@@ -1,126 +1,126 @@
-/*
- *  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
- *
- *  MatroskaTrackData.h
- *
- *  Copyright (C) Jory Stone - June 2003
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file MatroskaTrackData.h
-		\version \$Id: MatroskaChapterData.h,v 1.4 2004/03/20 05:08:30 jcsston=
 Exp $
-    \brief Some general code to make working with Matroska easier
-		\author Jory Stone     <jcsston @ toughguy.net>
-	=09
-		Inspired by ;) John Cannon ([email protected]) (c) 2003
-*/
-
-#ifndef _MATROSKA_CHAPTER_DATA_H_
-#define _MATROSKA_CHAPTER_DATA_H_
-
-#ifdef WIN32
-#include <windows.h>
-#endif //WIN32
-#include <vector>
-
-#include "MatroskaUtilsDebug.h"
-
-// libebml includes
-#include "ebml/StdIOCallback.h"
-#include "ebml/EbmlTypes.h"
-#include "ebml/EbmlHead.h"
-#include "ebml/EbmlVoid.h"
-#include "ebml/EbmlCrc32.h"
-#include "ebml/EbmlSubHead.h"
-#include "ebml/EbmlStream.h"
-#include "ebml/EbmlBinary.h"
-#include "ebml/EbmlString.h"
-#include "ebml/EbmlUnicodeString.h"
-#include "ebml/EbmlContexts.h"
-#include "ebml/EbmlVersion.h"
-
-// libmatroska includes
-#include "matroska/KaxConfig.h"
-#include "matroska/KaxSegment.h"
-#include "matroska/KaxContexts.h"
-#include "matroska/KaxChapters.h"
-#include "matroska/KaxVersion.h"
-
-#ifdef USING_TINYXML
-#include "tinyxml/tinyxml.h"
-#endif
-
-namespace MatroskaUtilsNamespace {
-
-class MatroskaChapterEntry;
-
-class MatroskaChapterList : public std::vector<MatroskaChapterEntry *> {
-public:=09
-	void Add(MatroskaChapterEntry *chapter);
-	virtual ~MatroskaChapterList();
-
-#ifdef USING_TINYXML
-	void ListAsXML(TiXmlElement &baseElement);
-#endif
-};
-
-class MatroskaChapterDisplayInfo {
-public:
-	MatroskaChapterDisplayInfo();
-	virtual ~MatroskaChapterDisplayInfo();
-
-	UTFstring string;
-	std::string lang;
-	std::string country;
-};
-
-class MatroskaChapterEntry {
-public:
-	MatroskaChapterEntry();
-	MatroskaChapterEntry(MatroskaChapterEntry *_parent);
-	virtual ~MatroskaChapterEntry();
-
-	virtual UTFstring &GetTimeStartStr();
-	virtual UTFstring &GetTimeEndStr();
-
-#ifdef USING_TINYXML
-	virtual void ListAsXML(TiXmlElement &baseElement);
-#endif
-
-	uint64 chapterUID;
-	uint64 timeStart;=09
-	uint64 timeEnd;
-=09
-	/// Vector of all the tracks this chapter applies to
-	/// if it's empty then this chapter applies to all tracks
-	std::vector<uint64> tracks;
-	/// Vector of strings we can display for chapter
-	std::vector<MatroskaChapterDisplayInfo> display;
-
-	// The parent of this entry, NULL if this is the root chapter
-	MatroskaChapterEntry *parent;
-	/// Children of this entry
-	MatroskaChapterList children;
-protected:
-	UTFstring m_timeStartStr;
-	UTFstring m_timeEndStr;
-};
-
-}; // namespace MatroskaUtilsNamespace {
-
-#endif // _MATROSKA_CHAPTER_DATA_H_
+/*
+ *  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
+ *
+ *  MatroskaTrackData.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file MatroskaTrackData.h
+		\version \$Id: MatroskaChapterData.h,v 1.4 2004/03/20 05:08:30 jcsston=
 Exp $
+    \brief Some general code to make working with Matroska easier
+		\author Jory Stone     <jcsston @ toughguy.net>
+	=09
+		Inspired by ;) John Cannon ([email protected]) (c) 2003
+*/
+
+#ifndef _MATROSKA_CHAPTER_DATA_H_
+#define _MATROSKA_CHAPTER_DATA_H_
+
+#ifdef WIN32
+#include <windows.h>
+#endif //WIN32
+#include <vector>
+
+#include "MatroskaUtilsDebug.h"
+
+// libebml includes
+#include "ebml/StdIOCallback.h"
+#include "ebml/EbmlTypes.h"
+#include "ebml/EbmlHead.h"
+#include "ebml/EbmlVoid.h"
+#include "ebml/EbmlCrc32.h"
+#include "ebml/EbmlSubHead.h"
+#include "ebml/EbmlStream.h"
+#include "ebml/EbmlBinary.h"
+#include "ebml/EbmlString.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlContexts.h"
+#include "ebml/EbmlVersion.h"
+
+// libmatroska includes
+#include "matroska/KaxConfig.h"
+#include "matroska/KaxSegment.h"
+#include "matroska/KaxContexts.h"
+#include "matroska/KaxChapters.h"
+#include "matroska/KaxVersion.h"
+
+#ifdef USING_TINYXML
+#include "tinyxml/tinyxml.h"
+#endif
+
+namespace MatroskaUtilsNamespace {
+
+class MatroskaChapterEntry;
+
+class MatroskaChapterList : public std::vector<MatroskaChapterEntry *> {
+public:=09
+	void Add(MatroskaChapterEntry *chapter);
+	virtual ~MatroskaChapterList();
+
+#ifdef USING_TINYXML
+	void ListAsXML(TiXmlElement &baseElement);
+#endif
+};
+
+class MatroskaChapterDisplayInfo {
+public:
+	MatroskaChapterDisplayInfo();
+	virtual ~MatroskaChapterDisplayInfo();
+
+	UTFstring string;
+	std::string lang;
+	std::string country;
+};
+
+class MatroskaChapterEntry {
+public:
+	MatroskaChapterEntry();
+	MatroskaChapterEntry(MatroskaChapterEntry *_parent);
+	virtual ~MatroskaChapterEntry();
+
+	virtual UTFstring &GetTimeStartStr();
+	virtual UTFstring &GetTimeEndStr();
+
+#ifdef USING_TINYXML
+	virtual void ListAsXML(TiXmlElement &baseElement);
+#endif
+
+	uint64 chapterUID;
+	uint64 timeStart;=09
+	uint64 timeEnd;
+=09
+	/// Vector of all the tracks this chapter applies to
+	/// if it's empty then this chapter applies to all tracks
+	std::vector<uint64> tracks;
+	/// Vector of strings we can display for chapter
+	std::vector<MatroskaChapterDisplayInfo> display;
+
+	// The parent of this entry, NULL if this is the root chapter
+	MatroskaChapterEntry *parent;
+	/// Children of this entry
+	MatroskaChapterList children;
+protected:
+	UTFstring m_timeStartStr;
+	UTFstring m_timeEndStr;
+};
+
+}; // namespace MatroskaUtilsNamespace {
+
+#endif // _MATROSKA_CHAPTER_DATA_H_


Property changes on: trunk/MatroskaUtils/MatroskaChapterData.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaPages.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaPages.h	2007-02-17 10:34:40 UTC (rev 1276=
)
+++ trunk/MatroskaUtils/MatroskaPages.h	2007-02-17 10:55:54 UTC (rev 1277=
)
@@ -1,169 +1,169 @@
-/*
- *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
- *
- *  MatroskaPages.h
- *
- *  Copyright (C) Jory Stone - June 2003
- *  Copyright (C) John Cannon - 2003
- *
- *  CDL API Copyright (C) Blacksun & Toff - 2003
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file MatroskaPages.h
-		\version \$Id: MatroskaPages.h,v 1.36 2004/03/07 08:08:48 jcsston Exp =
$
-    \brief This is all the GUI code for the CDL and Shell Extension
-		\author Jory Stone     <jcsston @ toughguy.net>
-
-*/
-
-#define MATROSKA_CDL_APP_NAME "The Matroska Infomation CDL v1.8"
-#define MATROSKA_SHELL_EXT_APP_NAME "Matroska Shell Extension v2.8"
-
-#ifndef _MATROSKA_PAGES_H_
-#define _MATROSKA_PAGES_H_
-
-#define MANIFEST_RESOURCE_ID 2
-
-#include "MatroskaUtilsDebug.h"
-#include "AviTagReader.h"
-#include "MP3TagReader.h"
-#include "MatroskaReg.h"
-#include "MatroskaUtils.h"
-
-#include "CFireRoutine.h"
-#include "resource.h"
-
-#include <windows.h>
-#include <commctrl.h>
-
-#define WM_LOADTRANSLATIONS WM_USER+0x12
-
-using namespace MatroskaUtilsNamespace;
-
-class MatroskaPages {
-public:
-	MatroskaPages();
-	~MatroskaPages();
-	uint16 AddRef();
-	uint16 Release();
-
-	MatroskaInfoParser *parser;  // The main workhorse of the CDL
-	bool g_bUseUnicodeWinAPI;    // Flag used to use Unicode or ANSI
-=09
-	HINSTANCE g_hAppInst; // Application instance handle (needed to create =
dialog)
-	HWND g_hTreeDialog;
-	HWND g_hInfoDialog;
-	HWND g_hTagDialog;
-	HWND g_hSimpleTagDialog;
-	HWND g_hAttachmentDialog;
-	HWND g_hChapterDialog;
-#ifdef USING_CXIMAGE
-	CxImage *attachedImage;
-#endif
-	TCHAR szFile[MAX_MATROSKA_PATH];
-
-protected:
-	uint16 m_RefCount;
-};
-
-#ifdef MATROSKA_PROP
-#pragma pack(push, pp1)
-#pragma pack(1)
-typedef struct tagMoreData
-{
-	PROPSHEETPAGE psp;
-	MatroskaPages *pObjPageData;
-} MoreData;
-#pragma pack(pop, pp1)
-#endif
-
-#define fireWidth 322
-#define fireHeight 64
-
-class MatroskaAboutDialog {
-public:
-	MatroskaAboutDialog();
-	/// About dialog text string
-	JString about_txt;
-
-#ifdef USING_CXIMAGE
-	~MatroskaAboutDialog();
-	void RenderFire(HWND hAboutDialog);
-	void PaintFire(HWND hAboutDialog);
-
-	CFireRoutine myFire;
-	RECT fireArea;
-	DWORD *myFireBitmap;
-	CxImage myFireImage;
-	CxImage myTextImage;
-	//CxImage *fireLayer;
-#endif // USING_CXIMAGE
-};
-
-BOOL CALLBACK AboutDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM l=
Param);
-BOOL CALLBACK TreeDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lP=
aram);
-BOOL CALLBACK ConfigurationDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,=
LPARAM lParam);
-BOOL CALLBACK IconDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lP=
aram);
-BOOL CALLBACK ProgressDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARA=
M lParam);
-BOOL CALLBACK MediaPropProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM =
lParam);
-BOOL CALLBACK MediaPropProc_DisplaySize(HWND hwndDlg,UINT uMsg,WPARAM wP=
aram,LPARAM lParam);
-BOOL CALLBACK MediaPropProc_TrackLanguage(HWND hwndDlg, UINT uMsg, WPARA=
M wParam, LPARAM lParam);
-BOOL CALLBACK MediaPropProc_Attachments(HWND hwndDlg,UINT uMsg,WPARAM wP=
aram,LPARAM lParam);
-BOOL CALLBACK MediaPropProc_AttachedFile(HWND hwndDlg,UINT uMsg,WPARAM w=
Param,LPARAM lParam);
-BOOL CALLBACK MediaPropProc_Chapters(HWND hwndDlg,UINT uMsg,WPARAM wPara=
m,LPARAM lParam);
-BOOL CALLBACK MediaPropProc_Tag(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPA=
RAM lParam);
-BOOL CALLBACK MediaPropProc_SimpleTag(HWND hwndDlg,UINT uMsg,WPARAM wPar=
am,LPARAM lParam);
-BOOL CALLBACK MediaPropProc_AddTag(HWND hwndDlg,UINT uMsg,WPARAM wParam,=
LPARAM lParam);
-BOOL CALLBACK MediaPropProc_AddSimpleTag(HWND hwndDlg,UINT uMsg,WPARAM w=
Param,LPARAM lParam);
-BOOL CALLBACK MediaPropProc_AddUID(HWND hwndDlg,UINT uMsg,WPARAM wParam,=
LPARAM lParam);
-BOOL CALLBACK MediaPropProc_BitrateDisplay(HWND hwndDlg,UINT uMsg,WPARAM=
 wParam,LPARAM lParam);
-
-//the parsing thread procedure
-void ParseFileMT(MatroskaPages *pageData, HWND parentDialog =3D NULL);
-void __cdecl MatroskaParserThread(void *pages);
-
-//Various GUI rountines
-MatroskaTrackInfo *GetMainSelectedTrack(HWND hwndDlg, MatroskaInfoParser=
 *parser);
-int DisplayMainTrackList(HWND hwndDlg, MatroskaInfoParser *parser);
-int DisplayBasicTrackInfo(HWND hwndDlg, MatroskaInfoParser *parser);
-int DisplayAdvancedTrackInfo(HWND hwndDlg, MatroskaInfoParser *parser);
-int DisplayTagEntryList(HWND hwndDlg, MatroskaInfoParser *parser);
-int DisplayTagUIDList(HWND hwndDlg, MatroskaTagInfo *tag);
-int DisplaySimpleTagTrackList(HWND hwndDlg, MatroskaInfoParser *parser);
-int DisplayAttachmentList(HWND hwndDlg, MatroskaInfoParser *parser);
-int GetEditControlTextLength(HWND theDialog, int edit_control);
-SIZE SmartResize(long sourceX, long sourceY, long maxX, long maxY);
-int CALLBACK ListViewCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM =
lParamSort);
-WORD AddTooltip(HWND hwndTooltip, HWND hwndClient, LPTSTR strText);
-MatroskaTagInfo *GetSelectedTagEntry(HWND hTagDlg);
-void MediaPropProc_Tag_DeleteTag(HWND hTagDlg);
-void MediaPropProc_Tag_TagEntryChange(HWND hwndDlg);
-void MediaPropProc_Tag_TagTextChange(HWND hwndDlg, MatroskaPages *pageDa=
ta);
-void MediaPropProc_Tag_TagListChange(HWND hwndDlg);
-void MediaPropProc_Tag_TagFieldChange(HWND hwndDlg, MatroskaPages *pageD=
ata);
-void MediaPropProc_Tag_TagTypeChange(HWND hwndDlg);
-UTFstring GetSelectedListItem(HWND hwndDlg, int ctrl);
-void DisplayChapterList(HWND hwndDlg, MatroskaInfoParser *parser);
-void DisplayChapterAtom_TreeView(HWND treeCtrl, HTREEITEM parent, Matros=
kaChapterEntry *chapter, std::wstring chapterTitle);
-
-// Crash test function
-void CrashMe();
-
-#endif // _MATROSKA_PAGES_H_
-
+/*
+ *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
+ *
+ *  MatroskaPages.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *  Copyright (C) John Cannon - 2003
+ *
+ *  CDL API Copyright (C) Blacksun & Toff - 2003
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file MatroskaPages.h
+		\version \$Id: MatroskaPages.h,v 1.36 2004/03/07 08:08:48 jcsston Exp =
$
+    \brief This is all the GUI code for the CDL and Shell Extension
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+#define MATROSKA_CDL_APP_NAME "The Matroska Infomation CDL v1.8"
+#define MATROSKA_SHELL_EXT_APP_NAME "Matroska Shell Extension v2.8"
+
+#ifndef _MATROSKA_PAGES_H_
+#define _MATROSKA_PAGES_H_
+
+#define MANIFEST_RESOURCE_ID 2
+
+#include "MatroskaUtilsDebug.h"
+#include "AviTagReader.h"
+#include "MP3TagReader.h"
+#include "MatroskaReg.h"
+#include "MatroskaUtils.h"
+
+#include "CFireRoutine.h"
+#include "resource.h"
+
+#include <windows.h>
+#include <commctrl.h>
+
+#define WM_LOADTRANSLATIONS WM_USER+0x12
+
+using namespace MatroskaUtilsNamespace;
+
+class MatroskaPages {
+public:
+	MatroskaPages();
+	~MatroskaPages();
+	uint16 AddRef();
+	uint16 Release();
+
+	MatroskaInfoParser *parser;  // The main workhorse of the CDL
+	bool g_bUseUnicodeWinAPI;    // Flag used to use Unicode or ANSI
+=09
+	HINSTANCE g_hAppInst; // Application instance handle (needed to create =
dialog)
+	HWND g_hTreeDialog;
+	HWND g_hInfoDialog;
+	HWND g_hTagDialog;
+	HWND g_hSimpleTagDialog;
+	HWND g_hAttachmentDialog;
+	HWND g_hChapterDialog;
+#ifdef USING_CXIMAGE
+	CxImage *attachedImage;
+#endif
+	TCHAR szFile[MAX_MATROSKA_PATH];
+
+protected:
+	uint16 m_RefCount;
+};
+
+#ifdef MATROSKA_PROP
+#pragma pack(push, pp1)
+#pragma pack(1)
+typedef struct tagMoreData
+{
+	PROPSHEETPAGE psp;
+	MatroskaPages *pObjPageData;
+} MoreData;
+#pragma pack(pop, pp1)
+#endif
+
+#define fireWidth 322
+#define fireHeight 64
+
+class MatroskaAboutDialog {
+public:
+	MatroskaAboutDialog();
+	/// About dialog text string
+	JString about_txt;
+
+#ifdef USING_CXIMAGE
+	~MatroskaAboutDialog();
+	void RenderFire(HWND hAboutDialog);
+	void PaintFire(HWND hAboutDialog);
+
+	CFireRoutine myFire;
+	RECT fireArea;
+	DWORD *myFireBitmap;
+	CxImage myFireImage;
+	CxImage myTextImage;
+	//CxImage *fireLayer;
+#endif // USING_CXIMAGE
+};
+
+BOOL CALLBACK AboutDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM l=
Param);
+BOOL CALLBACK TreeDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lP=
aram);
+BOOL CALLBACK ConfigurationDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,=
LPARAM lParam);
+BOOL CALLBACK IconDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lP=
aram);
+BOOL CALLBACK ProgressDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARA=
M lParam);
+BOOL CALLBACK MediaPropProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM =
lParam);
+BOOL CALLBACK MediaPropProc_DisplaySize(HWND hwndDlg,UINT uMsg,WPARAM wP=
aram,LPARAM lParam);
+BOOL CALLBACK MediaPropProc_TrackLanguage(HWND hwndDlg, UINT uMsg, WPARA=
M wParam, LPARAM lParam);
+BOOL CALLBACK MediaPropProc_Attachments(HWND hwndDlg,UINT uMsg,WPARAM wP=
aram,LPARAM lParam);
+BOOL CALLBACK MediaPropProc_AttachedFile(HWND hwndDlg,UINT uMsg,WPARAM w=
Param,LPARAM lParam);
+BOOL CALLBACK MediaPropProc_Chapters(HWND hwndDlg,UINT uMsg,WPARAM wPara=
m,LPARAM lParam);
+BOOL CALLBACK MediaPropProc_Tag(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPA=
RAM lParam);
+BOOL CALLBACK MediaPropProc_SimpleTag(HWND hwndDlg,UINT uMsg,WPARAM wPar=
am,LPARAM lParam);
+BOOL CALLBACK MediaPropProc_AddTag(HWND hwndDlg,UINT uMsg,WPARAM wParam,=
LPARAM lParam);
+BOOL CALLBACK MediaPropProc_AddSimpleTag(HWND hwndDlg,UINT uMsg,WPARAM w=
Param,LPARAM lParam);
+BOOL CALLBACK MediaPropProc_AddUID(HWND hwndDlg,UINT uMsg,WPARAM wParam,=
LPARAM lParam);
+BOOL CALLBACK MediaPropProc_BitrateDisplay(HWND hwndDlg,UINT uMsg,WPARAM=
 wParam,LPARAM lParam);
+
+//the parsing thread procedure
+void ParseFileMT(MatroskaPages *pageData, HWND parentDialog =3D NULL);
+void __cdecl MatroskaParserThread(void *pages);
+
+//Various GUI rountines
+MatroskaTrackInfo *GetMainSelectedTrack(HWND hwndDlg, MatroskaInfoParser=
 *parser);
+int DisplayMainTrackList(HWND hwndDlg, MatroskaInfoParser *parser);
+int DisplayBasicTrackInfo(HWND hwndDlg, MatroskaInfoParser *parser);
+int DisplayAdvancedTrackInfo(HWND hwndDlg, MatroskaInfoParser *parser);
+int DisplayTagEntryList(HWND hwndDlg, MatroskaInfoParser *parser);
+int DisplayTagUIDList(HWND hwndDlg, MatroskaTagInfo *tag);
+int DisplaySimpleTagTrackList(HWND hwndDlg, MatroskaInfoParser *parser);
+int DisplayAttachmentList(HWND hwndDlg, MatroskaInfoParser *parser);
+int GetEditControlTextLength(HWND theDialog, int edit_control);
+SIZE SmartResize(long sourceX, long sourceY, long maxX, long maxY);
+int CALLBACK ListViewCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM =
lParamSort);
+WORD AddTooltip(HWND hwndTooltip, HWND hwndClient, LPTSTR strText);
+MatroskaTagInfo *GetSelectedTagEntry(HWND hTagDlg);
+void MediaPropProc_Tag_DeleteTag(HWND hTagDlg);
+void MediaPropProc_Tag_TagEntryChange(HWND hwndDlg);
+void MediaPropProc_Tag_TagTextChange(HWND hwndDlg, MatroskaPages *pageDa=
ta);
+void MediaPropProc_Tag_TagListChange(HWND hwndDlg);
+void MediaPropProc_Tag_TagFieldChange(HWND hwndDlg, MatroskaPages *pageD=
ata);
+void MediaPropProc_Tag_TagTypeChange(HWND hwndDlg);
+UTFstring GetSelectedListItem(HWND hwndDlg, int ctrl);
+void DisplayChapterList(HWND hwndDlg, MatroskaInfoParser *parser);
+void DisplayChapterAtom_TreeView(HWND treeCtrl, HTREEITEM parent, Matros=
kaChapterEntry *chapter, std::wstring chapterTitle);
+
+// Crash test function
+void CrashMe();
+
+#endif // _MATROSKA_PAGES_H_
+


Property changes on: trunk/MatroskaUtils/MatroskaPages.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaReg.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaReg.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/MatroskaReg.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,69 +1,69 @@
-/**
-	*  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
-	*
-	*  MatroskaReg.h
-	*
-	*  Copyright (C) Jory Stone - June 2003
-	*
-	*
-	*  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
-	*  it under the terms of the GNU General Public License as published by
-	*  the Free Software Foundation; either version 2, or (at your option)
-	*  any later version.
-	*
-	*  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
-	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	*  GNU General Public License for more details.
-	*
-	*  You should have received a copy of the GNU General Public License
-	*  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
-	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
-	*
-*/
-
-/*!
-    \file MatroskaReg.h
-		\version \$Id: MatroskaReg.h,v 1.4 2004/03/07 08:08:48 jcsston Exp $
-    \brief Some settings saving code
-		\author Jory Stone     <jcsston @ toughguy.net>
-*/
-
-#ifndef _MATROSKA_REG_H_
-#define _MATROSKA_REG_H_
-
-#include <windows.h>
-#include <string.h>
-#include <tchar.h>
-#include "JString.h"
-
-/// Gets a uint32 value from the Key under HKEY_CURRENT_USER\\Software\\=
CoreCodec\\The Core Media Player\\Matroska Info CDL
-/// \param value_key The name of the subkey you wish to get
-/// \param default_value If this key doesn't exist this value will be re=
turned to you
-/// \return The uint32 value of the requested key, default_value is retu=
rned if the key doesn't exist
-DWORD MatroskaCDL_GetRegistryValue(TCHAR *value_key, DWORD default_value=
);
-DWORD MatroskaShellExt_GetRegistryValue(TCHAR *value_key, DWORD default_=
value);
-/// Sets a uint32 value to a Key under HKEY_CURRENT_USER\\Software\\Core=
Codec\\The Core Media Player\\Matroska Info CDL
-/// \param value_key The name of the subkey you wish to save
-/// \param the_value The value to write to the Registry key
-void MatroskaCDL_SetRegistryValue(TCHAR *value_key, DWORD the_value);
-void MatroskaShellExt_SetRegistryValue(TCHAR *value_key, DWORD the_value=
);
-
-JString MatroskaShellExt_GetRegistryValueStr(TCHAR *value_key, JString d=
efault_value);
-void MatroskaShellExt_SetRegistryValueStr(TCHAR *value_key, JString the_=
value);
-
-class CRegistryRestore {
-public:
-
-	void AddKey(HKEY root, LPCTSTR keyLocation, LPVOID data, DWORD size);
-
-	/// Preserve all changes made since last Preserve() call
-	void Preserve(HKEY root, LPCTSTR keyLocation);
-	/// Reverse all changes made, supply same root and keyLocation as previ=
ously given to Preserve() call
-	void Reverse(HKEY root, LPCTSTR keyLocation);
-=09
-protected:
-
-};
-
-#endif // _MATROSKA_REG_H_
+/**
+	*  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
+	*
+	*  MatroskaReg.h
+	*
+	*  Copyright (C) Jory Stone - June 2003
+	*
+	*
+	*  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+	*  it under the terms of the GNU General Public License as published by
+	*  the Free Software Foundation; either version 2, or (at your option)
+	*  any later version.
+	*
+	*  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	*  GNU General Public License for more details.
+	*
+	*  You should have received a copy of the GNU General Public License
+	*  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+	*
+*/
+
+/*!
+    \file MatroskaReg.h
+		\version \$Id: MatroskaReg.h,v 1.4 2004/03/07 08:08:48 jcsston Exp $
+    \brief Some settings saving code
+		\author Jory Stone     <jcsston @ toughguy.net>
+*/
+
+#ifndef _MATROSKA_REG_H_
+#define _MATROSKA_REG_H_
+
+#include <windows.h>
+#include <string.h>
+#include <tchar.h>
+#include "JString.h"
+
+/// Gets a uint32 value from the Key under HKEY_CURRENT_USER\\Software\\=
CoreCodec\\The Core Media Player\\Matroska Info CDL
+/// \param value_key The name of the subkey you wish to get
+/// \param default_value If this key doesn't exist this value will be re=
turned to you
+/// \return The uint32 value of the requested key, default_value is retu=
rned if the key doesn't exist
+DWORD MatroskaCDL_GetRegistryValue(TCHAR *value_key, DWORD default_value=
);
+DWORD MatroskaShellExt_GetRegistryValue(TCHAR *value_key, DWORD default_=
value);
+/// Sets a uint32 value to a Key under HKEY_CURRENT_USER\\Software\\Core=
Codec\\The Core Media Player\\Matroska Info CDL
+/// \param value_key The name of the subkey you wish to save
+/// \param the_value The value to write to the Registry key
+void MatroskaCDL_SetRegistryValue(TCHAR *value_key, DWORD the_value);
+void MatroskaShellExt_SetRegistryValue(TCHAR *value_key, DWORD the_value=
);
+
+JString MatroskaShellExt_GetRegistryValueStr(TCHAR *value_key, JString d=
efault_value);
+void MatroskaShellExt_SetRegistryValueStr(TCHAR *value_key, JString the_=
value);
+
+class CRegistryRestore {
+public:
+
+	void AddKey(HKEY root, LPCTSTR keyLocation, LPVOID data, DWORD size);
+
+	/// Preserve all changes made since last Preserve() call
+	void Preserve(HKEY root, LPCTSTR keyLocation);
+	/// Reverse all changes made, supply same root and keyLocation as previ=
ously given to Preserve() call
+	void Reverse(HKEY root, LPCTSTR keyLocation);
+=09
+protected:
+
+};
+
+#endif // _MATROSKA_REG_H_


Property changes on: trunk/MatroskaUtils/MatroskaReg.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaTagData.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaTagData.h	2007-02-17 10:34:40 UTC (rev 12=
76)
+++ trunk/MatroskaUtils/MatroskaTagData.h	2007-02-17 10:55:54 UTC (rev 12=
77)
@@ -1,552 +1,552 @@
-/*
- *  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
- *
- *  MatroskaTagData.h
- *
- *  Copyright (C) Jory Stone - June 2003
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file MatroskaTagData.h
-		\version \$Id: MatroskaTagData.h,v 1.18 2004/03/08 07:56:51 jcsston Ex=
p $
-    \brief This file deals mostly with the tag stuctures ;)
-		\author Jory Stone     <jcsston @ toughguy.net>
-	=09
-		Inspired by ;) John Cannon ([email protected]) (c) 2003
-*/
-
-#ifndef _MATROSKA_TAG_DATA_H_
-#define _MATROSKA_TAG_DATA_H_
-
-#ifdef WIN32
-#include <windows.h>
-#endif //WIN32
-#include <time.h>
-
-#include "MatroskaUtilsDebug.h"
-
-// libebml includes
-#include "ebml/StdIOCallback.h"
-#include "ebml/EbmlTypes.h"
-#include "ebml/EbmlHead.h"
-#include "ebml/EbmlVoid.h"
-#include "ebml/EbmlCrc32.h"
-#include "ebml/EbmlSubHead.h"
-#include "ebml/EbmlStream.h"
-#include "ebml/EbmlBinary.h"
-#include "ebml/EbmlString.h"
-#include "ebml/EbmlUnicodeString.h"
-#include "ebml/EbmlContexts.h"
-#include "ebml/EbmlVersion.h"
-
-// libmatroska includes
-#include "matroska/KaxConfig.h"
-#include "matroska/KaxBlock.h"
-#include "matroska/KaxSegment.h"
-#include "matroska/KaxContexts.h"
-#include "matroska/KaxSeekHead.h"
-#include "matroska/KaxTracks.h"
-#include "matroska/KaxInfo.h"
-#include "matroska/KaxInfoData.h"
-#include "matroska/KaxTags.h"
-#include "matroska/KaxTag.h"
-#include "matroska/KaxTagMulti.h"
-#include "matroska/KaxCluster.h"
-#include "matroska/KaxClusterData.h"
-#include "matroska/KaxTrackAudio.h"
-#include "matroska/KaxTrackVideo.h"
-#include "matroska/KaxAttachments.h"
-#include "matroska/KaxAttached.h"
-#include "matroska/KaxVersion.h"
-
-namespace MatroskaUtilsNamespace {
-
-struct MatroskaSimpleTagOfficalListEntry {
-	TCHAR *name;
-	TCHAR *desc;
-};
-
-class MatroskaTagUID : public std::vector<uint64> {
-public:
-	MatroskaTagUID();
-
-	void Add(uint64 newUID);
-	void Remove(uint64 deleteUID);=09
-	uint64 &Find(uint64 uid);
-	uint64 &operator =3D (uint64 newUID);
-	operator uint64();
-=09
-};
-
-class MatroskaTagMultiItemBase {
-public:
-	MatroskaTagMultiItemBase();
-	/// Checks if the multi-tag is valid
-	virtual bool IsValid();=09
-	/// Invalidates the tag and marks for deletion
-	virtual void Invalidate();=09
-	uint16 Type;
-};
-
-class MatroskaTagMultiCommentItem : public MatroskaTagMultiItemBase {
-public:
-	MatroskaTagMultiCommentItem();
-	std::string Name;
-	UTFstring Comments;
-	std::string Language;
-	///Pointer to next item
-	MatroskaTagMultiCommentItem *next_item;
-};
-
-class MatroskaTagMultiCommercialItem : public MatroskaTagMultiItemBase {
-public:
-	MatroskaTagMultiCommercialItem();=09
-	UTFstring Address;
-	std::string URL;
-	std::string Email;
-	std::string PriceCurrency;
-	double PriceAmount;
-	int64 PriceDate;
-	///Pointer to next item
-	MatroskaTagMultiCommercialItem *next_item;
-};
-
-class MatroskaTagMultiDateItem : public MatroskaTagMultiItemBase {
-public:
-	MatroskaTagMultiDateItem();
-
-	time_t DateBegin;
-	time_t DateEnd;
-	///Pointer to next item
-	MatroskaTagMultiDateItem *next_item;
-};
-
-class MatroskaTagMultiEntityItem : public MatroskaTagMultiItemBase {
-public:
-	MatroskaTagMultiEntityItem();
-
-	UTFstring Name;
-	std::string URL;
-	std::string Email;
-	UTFstring Address;
-	///Pointer to next item
-	MatroskaTagMultiEntityItem *next_item;
-};
-
-class MatroskaTagMultiIdentifierItem : public MatroskaTagMultiItemBase {
-public:
-	MatroskaTagMultiIdentifierItem();
-=09
-	binary *BinaryData;
-	uint32 BinaryData_Length;
-	UTFstring StringData;
-	///Pointer to next item
-	MatroskaTagMultiIdentifierItem *next_item;
-};
-
-class MatroskaTagMultiLegalItem : public MatroskaTagMultiItemBase {
-public:
-	MatroskaTagMultiLegalItem();
-=09
-	std::string URL;
-	UTFstring Address;
-	UTFstring Text;
-	///Pointer to next item
-	MatroskaTagMultiLegalItem *next_item;
-};
-
-class MatroskaTagMultiTitleItem : public MatroskaTagMultiItemBase {
-public:
-	MatroskaTagMultiTitleItem();
-=09
-	UTFstring Name;
-	UTFstring SubTitle;
-	UTFstring Edition;
-	UTFstring Address;
-	std::string URL;
-	std::string Email;
-	std::string Language;
-	///Pointer to next item
-	MatroskaTagMultiTitleItem *next_item;
-};
-
-class MatroskaTagMultiComment
-{
-public:
-	MatroskaTagMultiComment();
-	~MatroskaTagMultiComment();
-	void AddItem(MatroskaTagMultiCommentItem *new_item);
-	MatroskaTagMultiCommentItem *FindTrackItemWithLang(char *language_id);
-	int GetMultiCommentCount();
-	MatroskaTagMultiCommentItem *GetItem(int requested_index);
-protected:
-  ///Pointer to the first item in the linked list
-	MatroskaTagMultiCommentItem *first_item;
-};
-
-class MatroskaTagMultiCommercial
-{
-public:
-	MatroskaTagMultiCommercial();
-	~MatroskaTagMultiCommercial();
-	void AddItem(MatroskaTagMultiCommercialItem *new_item);
-	MatroskaTagMultiCommercialItem *FindTrackItemWithType(int type_id);
-	int GetMultiCommercialCount();
-	MatroskaTagMultiCommercialItem *GetItem(int requested_index);
-	static char *ConvertTypeUIntToStr(uint16 type_id);
-	static uint16 ConvertTypeStrToUInt(char *type_str);
-protected:
-  ///Pointer to the first item in the linked list
-	MatroskaTagMultiCommercialItem *first_item;
-};
-
-class MatroskaTagMultiDate
-{
-public:
-	MatroskaTagMultiDate();
-	~MatroskaTagMultiDate();
-	void AddItem(MatroskaTagMultiDateItem *new_item);
-	MatroskaTagMultiDateItem *FindTrackItemWithType(int type_id);
-	int GetMultiDateCount();
-	MatroskaTagMultiDateItem *GetItem(int requested_index);
-	static char *ConvertTypeUIntToStr(uint16 type_id);
-	static uint16 ConvertTypeStrToUInt(char *type_str);
-protected:
-  ///Pointer to the first item in the linked list
-	MatroskaTagMultiDateItem *first_item;
-};
-
-class MatroskaTagMultiEntity
-{
-public:
-	MatroskaTagMultiEntity();
-	~MatroskaTagMultiEntity();
-	void AddItem(MatroskaTagMultiEntityItem *new_item);
-	MatroskaTagMultiEntityItem *FindTrackItemWithType(int type_id);
-	int GetMultiEntityCount();
-	MatroskaTagMultiEntityItem *GetItem(int requested_index);
-	static char *ConvertTypeUIntToStr(uint16 type_id);
-	static uint16 ConvertTypeStrToUInt(char *type_str);
-protected:
-  ///Pointer to the first item in the linked list
-	MatroskaTagMultiEntityItem *first_item;
-};
-
-class MatroskaTagMultiIdentifier
-{
-public:
-	MatroskaTagMultiIdentifier();
-	~MatroskaTagMultiIdentifier();
-	void AddItem(MatroskaTagMultiIdentifierItem *new_item);
-	MatroskaTagMultiIdentifierItem *FindTrackItemWithType(int type_id);
-	int GetMultiIdentifierCount();
-	MatroskaTagMultiIdentifierItem *GetItem(int requested_index);
-	static char *ConvertTypeUIntToStr(uint16 type_id);
-	static uint16 ConvertTypeStrToUInt(char *type_str);
-
-protected:
-  ///Pointer to the first item in the linked list
-	MatroskaTagMultiIdentifierItem *first_item;
-};
-
-class MatroskaTagMultiLegal
-{
-public:
-	MatroskaTagMultiLegal();
-	~MatroskaTagMultiLegal();
-	void AddItem(MatroskaTagMultiLegalItem *new_item);
-	MatroskaTagMultiLegalItem *FindTrackItemWithType(int type_id);
-	int GetMultiLegalCount();
-	MatroskaTagMultiLegalItem *GetItem(int requested_index);
-	static char *ConvertTypeUIntToStr(uint16 type_id);
-	static uint16 ConvertTypeStrToUInt(char *type_str);
-protected:
-  ///Pointer to the first item in the linked list
-	MatroskaTagMultiLegalItem *first_item;
-};
-
-class MatroskaTagMultiTitle
-{
-public:
-	MatroskaTagMultiTitle();
-	~MatroskaTagMultiTitle();
-	void AddItem(MatroskaTagMultiTitleItem *new_item);
-	MatroskaTagMultiTitleItem *FindTrackItemWithType(int type_id);
-	int GetMultiTitleCount();
-	MatroskaTagMultiTitleItem *GetItem(int requested_index);
-	static char *ConvertTypeUIntToStr(uint16 type_id);
-	static uint16 ConvertTypeStrToUInt(char *type_str);
-protected:
-  ///Pointer to the first item in the linked list
-	MatroskaTagMultiTitleItem *first_item;
-};
-
-class MatroskaSimpleTag {
-public:
-	MatroskaSimpleTag();	=09
-
-	static MatroskaSimpleTagOfficalListEntry &GetOfficalList(size_t i);
-	static TCHAR *GetOfficalList_Name(size_t i);
-	static TCHAR *GetOfficalList_Desc(size_t i);
-	UTFstring name;
-	UTFstring value;
-	bool bDelete;
-};
-
-class MatroskaSimpleTagList : public std::vector<MatroskaSimpleTag *> {
-public:
-	MatroskaSimpleTagList();
-	~MatroskaSimpleTagList();
-
-	UTFstring &GetSimpleTag(const char *name);
-	void SetSimpleTagValue(const char *name, const char *value);
-	void SetSimpleTagValue(const wchar_t *name, const wchar_t *value);
-	void Remove(size_t index);
-	void Remove(MatroskaSimpleTag *deleteTag);
-	size_t Lookup(MatroskaSimpleTag *tagLookup);
-	void Cleanup();
-};
-
-/*********************** Main Tag Class *************************/
-class MatroskaTagInfo {
-	public:
-		MatroskaTagInfo();
-		~MatroskaTagInfo();
-		//Merge another tag info data, leaving this tag left
-		void MergeWithThisTagInfo(MatroskaTagInfo *source_tags);
-			=09
-		//Functions to easily get all of the tags
-		//Returns the tag name of the tag index passed
-		static char *GetTagListStr(uint32 tag_index);
-		//Converts the tag name back to the tag index number
-		static uint32 GetTagListUInt(char* tag_name);
-		//Get the tag name and more infomation about a tag index
-		static char *MatroskaTagInfo::GetTagListStrInfo(uint32 tag_index);
-
-
-		//Base Tags
-		MatroskaTagUID Tag_TrackUID;
-		/// The UID of the chapter this Tag applies to
-		MatroskaTagUID Tag_ChapterUID;
-		MatroskaTagUID Tag_AttachmentUID;
-
-		UTFstring Tag_ArchivalLocation;
-		std::vector<binary> Tag_AudioEncryption;
-		double Tag_AudioGain;
-		std::string Tag_AudioGenre;
-		double Tag_AudioPeak;
-		std::string Tag_AudioSecondaryGenre;
-		UTFstring Tag_Bibliography;
-		double Tag_BPM;
-		uint32 Tag_CaptureDPI;
-		uint32 Tag_CapturePaletteSetting;
-		UTFstring Tag_Cropped;
-		uint32 Tag_DiscTrack;
-		UTFstring Tag_Encoder;
-		UTFstring Tag_EncodeSettings;
-		UTFstring Tag_File;
-		std::string Tag_InitialKey;
-		UTFstring Tag_Keywords;
-		std::string Tag_Language;
-		uint32 Tag_Length;
-		UTFstring Tag_Mood;
-		std::string Tag_OfficialAudioFileURL;
-		std::string Tag_OfficialAudioSourceURL;
-		std::string Tag_OriginalDimensions;
-		UTFstring Tag_OriginalMediaType;
-		uint32 Tag_PlayCounter;
-		uint32 Tag_PlaylistDelay;
-		int32 Tag_Popularimeter;
-		UTFstring Tag_Product;
-		std::vector<binary> Tag_Rating;
-		std::string Tag_RecordLocation;
-		uint32 Tag_SetPart;
-		UTFstring Tag_Source;
-		UTFstring Tag_SourceForm;
-		std::string Tag_SubGenre;
-		UTFstring Tag_Subject;
-		std::string Tag_SynchronisedTempo;
-		UTFstring Tag_SynchronisedText;
-		UTFstring Tag_UnsynchronisedText;
-		std::string Tag_UserDefinedURL;
-		std::vector<binary> Tag_VideoGenre;
-		std::vector<binary> Tag_VideoSecondaryGenre;
-	=09
-		//The amazing Multi-* tags
-		//Smart Multi-Comment Item Add
-		void AddMultiCommentItem(MatroskaTagMultiCommentItem *new_item);
-		MatroskaTagMultiComment *Tag_MultiComments;
-		//Smart Multi-Commercia Item Add
-		void AddMultiCommercialItem(MatroskaTagMultiCommercialItem *new_item);
-		MatroskaTagMultiCommercial *Tag_MultiCommercials;
-		//Smart Multi-Date Item Add
-		void AddMultiDateItem(MatroskaTagMultiDateItem *new_item);
-		MatroskaTagMultiDate *Tag_MultiDates;
-		//Smart Multi-Entity Item Add
-		void AddMultiEntityItem(MatroskaTagMultiEntityItem *new_item);
-		MatroskaTagMultiEntity *Tag_MultiEntities;
-		//Smart Multi-Identifier Item Add
-		void AddMultiIdentifierItem(MatroskaTagMultiIdentifierItem *new_item);
-		MatroskaTagMultiIdentifier *Tag_MultiIdentifiers;
-		//Smart Multi-Legal Item Add
-		void AddMultiLegalItem(MatroskaTagMultiLegalItem *new_item);
-		MatroskaTagMultiLegal	*Tag_MultiLegals;
-		//Smart Multi-Title Item Add
-		void AddMultiTitleItem(MatroskaTagMultiTitleItem *new_item);
-		MatroskaTagMultiTitle *Tag_MultiTitles;
-	=09
-		//This really shouldn't be here
-		//UTFstring Tag_MuxingApp;  //Now it isn't :P
-		//This really shoudn't be here
-		//UTFstring Tag_WritingApp; //Now it isn't :P
-
-		//Pointers to the correct Multi-* Tag element text
-		//Pointer to the Multi-Title field for the ID3 Title Field
-		UTFstring *Tag_Simple_Title;
-		//Pointer to the Multi-Entity field for ID3 Artist Field
-		UTFstring *Tag_Simple_Artist;
-		//Pointer to the Multi-Title field for ID3 Album Field
-		UTFstring *Tag_Simple_Album;
-
-		MatroskaSimpleTagList Tag_Simple_Tags;
-};
-
-class MatroskaTagList : public std::vector<MatroskaTagInfo *> {
-public:
-	MatroskaTagList();
-	~MatroskaTagList();
-
-	UTFstring &FindSimpleTag(const char *name);
-	/// Find a tag entry with the assigned track uid
-	/// \param bOnly If true the returned tag will only be assigned to the =
track uid, no other uids
-	/// \return NULL If not found
-	MatroskaTagInfo *FindByTrackUID(uint64 uid, bool bOnly =3D false);
-
-	void Remove(MatroskaTagInfo *tag);
-};
-
-#ifdef USE_NEW_MKV_TAG_SYSTEM
-
-enum MTag_TagTypes
-{
-	MTag_None =3D 0,
-	MTag_General =3D 100,
-	MTag_General_MultiComment,
-	MTag_General_MultiCommercial,
-	MTag_General_MultiDate,
-	MTag_General_MultiEntity,
-	MTag_General_MultiIdentifier,
-	MTag_General_MultiLegal,
-	MTag_General_MultiTitle,
-	MTag_General_Subject,//UTF-8
-	MTag_General_Bibliography,//UTF-8
-	MTag_General_Language,//string
-	MTag_General_Rating,//binary
-	MTag_General_Encoder,//UTF-8
-	MTag_General_EncodeSettings,//UTF-8
-	MTag_General_File,//UTF-8
-	MTag_General_ArchivalLocation,//UTF-8
-	MTag_General_RecordLocation,//string
-	MTag_General_Keywords,//UTF-8
-	MTag_General_Mood,//UTF-8
-	MTag_General_Source, //UTF-8
-	MTag_General_SourceForm, //UTF-8
-	MTag_General_Product,  	//UTF-8
-	MTag_General_OriginalMediaType, //UTF-8
-	MTag_General_PlayCounter, //u-integer
-	MTag_General_Popularimeter, //integer
-	MTag_Genres =3D 2000,
-	MTag_Genres_AudioGenre, //string 	The genre of the audio. (same as the =
TCON tag in ID3).
-	MTag_Genres_VideoGenre, //binary 	Genre of the video using a 4 byte ID.=
 More info about the content on the older page.
-	MTag_Genres_SubGenre, //string
-	MTag_AudioSpecific =3D 3000,
-	MTag_AudioSpecific_AudioEncryption,  	//binary 	This is an exact dump o=
f the AENC tag in ID3v2.4. It should never be used otherwise.
-	MTag_AudioSpecific_AudioGain, 	//float 	The gain to apply to reach 89db=
 SPL on playback.
-	MTag_AudioSpecific_AudioPeak,	//float 	The maximum absolute peak value =
of the item.
-	MTag_AudioSpecific_BPM, 	//float 	Contains the number of beats per minu=
te in the main part of the audio. This is general. (same as the TBPM tag =
in ID3).
-	MTag_AudioSpecific_Equalisation, 	//binary 	This is an exact dump of th=
e EQU2 tag in ID3v2.4. It should never be used otherwise.
-	MTag_AudioSpecific_DiscTrack, 	//u-integer 	Track number in the origina=
l CD. (same as the TRCK tag in ID3).
-	MTag_AudioSpecific_SetPart, 	//u-integer 	The total number of tracks on=
 a disc. (same as the TPOS tag in ID3).
-	MTag_AudioSpecific_InitialKey,//string 	The initial key that a musical =
track starts in. (same as the TKEY tag in ID3).
-	MTag_AudioSpecific_OfficialFileURL, 	//string 	A URL pointing to the of=
ficial webpage for this item. (same as the WOAF tag in ID3).
-	MTag_AudioSpecific_OfficialSourceURL, //string
-	MTag_ImageSpecific =3D 4000,
-	MTag_ImageSpecific_CaptureDPI, //u-integer  	Stores dots per inch setti=
ng of the digitizer used to produce the file, such as "300." (same as the=
 IDPI tag in RIFF).
-	MTag_ImageSpecific_CaptureLightness, //Binary 	Describes the changes in=
 lightness settings on the digitizer required to produce the file. Note t=
hat the format of this information depends on hardware used. (same as the=
 ILGT tag in RIFF).
-	MTag_ImageSpecific_CapturePaletteSetting, //u-integer 	Specifies the nu=
mber of colors requested when digitizing an image, such as "256." (same a=
s the IPLT tag in RIFF).
-	MTag_ImageSpecific_CaptureSharpness, //Binary 	Identifies the changes i=
n sharpness for the digitizer required to produce the file (the format de=
pends on the hardware used). (same as the ISHP tag in RIFF).
-	MTag_ImageSpecific_Cropped, //string 	Describes whether an image has be=
en cropped and, if so, how it was cropped. For example, "lower right corn=
er." (same as the ICRP tag in RIFF).
-	MTag_ImageSpecific_OriginalDimensions, //string
-};
-
-/// This is the base class for tags
-class MTagBase
-{
-public:
-	enum MTag_TagTypes type;
-};
-
-class MatroskaTagItem
-{
-public:
-	MatroskaTagItem();
-	~MatroskaTagItem();
-
-	/// Used Internally
-	MTag_TagTypes tag_type;
-
-	UTFstring *UTF_data;
-	std::string *string_data;
-	uint64 *uinteger_data;
-	int64 *integer_data;
-	double *float_data;
-	binary *binary_data;
-	uint64 binary_data_len;
-
-	//The amazing Multi-* tags
-	MatroskaTagMultiComment *MultiComment_data;
-	MatroskaTagMultiCommercial *MultiCommercial_data;
-	MatroskaTagMultiDate *MultiDate_data;
-	MatroskaTagMultiEntity *MultiEntity_data;
-	MatroskaTagMultiIdentifier *MultiIdentifier_data;
-	MatroskaTagMultiLegal	*MultiLegal_data;
-	MatroskaTagMultiTitle *MultiTitle_data;
-};
-
-class MatroskaTagList
-{
-public:
-	MatroskaTagList();
-	~MatroskaTagList();
-	void AddItem(MatroskaTagItem *new_item);
-	int DeleteItem(MatroskaTagItem *new_item);
-	int DeleteItem(int requested_index);
-	MatroskaTagItem *GetItem(int requested_index);
-	int GetCount();
-	MatroskaTagItem *FindTrackItemWithType(int type_id);
-protected:
-  ///Pointer to the first item in the linked list
-	MatroskaTagItem *first_item;
-	MatroskaTagItem *last_item;
-};
-
-#endif // USE_NEW_MKV_TAG_SYSTEM
-
-}; //End namespace MatroskaUtilsNamespace
-
-#endif // _MATROSKA_TAG_DATA_H_
+/*
+ *  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
+ *
+ *  MatroskaTagData.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file MatroskaTagData.h
+		\version \$Id: MatroskaTagData.h,v 1.18 2004/03/08 07:56:51 jcsston Ex=
p $
+    \brief This file deals mostly with the tag stuctures ;)
+		\author Jory Stone     <jcsston @ toughguy.net>
+	=09
+		Inspired by ;) John Cannon ([email protected]) (c) 2003
+*/
+
+#ifndef _MATROSKA_TAG_DATA_H_
+#define _MATROSKA_TAG_DATA_H_
+
+#ifdef WIN32
+#include <windows.h>
+#endif //WIN32
+#include <time.h>
+
+#include "MatroskaUtilsDebug.h"
+
+// libebml includes
+#include "ebml/StdIOCallback.h"
+#include "ebml/EbmlTypes.h"
+#include "ebml/EbmlHead.h"
+#include "ebml/EbmlVoid.h"
+#include "ebml/EbmlCrc32.h"
+#include "ebml/EbmlSubHead.h"
+#include "ebml/EbmlStream.h"
+#include "ebml/EbmlBinary.h"
+#include "ebml/EbmlString.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlContexts.h"
+#include "ebml/EbmlVersion.h"
+
+// libmatroska includes
+#include "matroska/KaxConfig.h"
+#include "matroska/KaxBlock.h"
+#include "matroska/KaxSegment.h"
+#include "matroska/KaxContexts.h"
+#include "matroska/KaxSeekHead.h"
+#include "matroska/KaxTracks.h"
+#include "matroska/KaxInfo.h"
+#include "matroska/KaxInfoData.h"
+#include "matroska/KaxTags.h"
+#include "matroska/KaxTag.h"
+#include "matroska/KaxTagMulti.h"
+#include "matroska/KaxCluster.h"
+#include "matroska/KaxClusterData.h"
+#include "matroska/KaxTrackAudio.h"
+#include "matroska/KaxTrackVideo.h"
+#include "matroska/KaxAttachments.h"
+#include "matroska/KaxAttached.h"
+#include "matroska/KaxVersion.h"
+
+namespace MatroskaUtilsNamespace {
+
+struct MatroskaSimpleTagOfficalListEntry {
+	TCHAR *name;
+	TCHAR *desc;
+};
+
+class MatroskaTagUID : public std::vector<uint64> {
+public:
+	MatroskaTagUID();
+
+	void Add(uint64 newUID);
+	void Remove(uint64 deleteUID);=09
+	uint64 &Find(uint64 uid);
+	uint64 &operator =3D (uint64 newUID);
+	operator uint64();
+=09
+};
+
+class MatroskaTagMultiItemBase {
+public:
+	MatroskaTagMultiItemBase();
+	/// Checks if the multi-tag is valid
+	virtual bool IsValid();=09
+	/// Invalidates the tag and marks for deletion
+	virtual void Invalidate();=09
+	uint16 Type;
+};
+
+class MatroskaTagMultiCommentItem : public MatroskaTagMultiItemBase {
+public:
+	MatroskaTagMultiCommentItem();
+	std::string Name;
+	UTFstring Comments;
+	std::string Language;
+	///Pointer to next item
+	MatroskaTagMultiCommentItem *next_item;
+};
+
+class MatroskaTagMultiCommercialItem : public MatroskaTagMultiItemBase {
+public:
+	MatroskaTagMultiCommercialItem();=09
+	UTFstring Address;
+	std::string URL;
+	std::string Email;
+	std::string PriceCurrency;
+	double PriceAmount;
+	int64 PriceDate;
+	///Pointer to next item
+	MatroskaTagMultiCommercialItem *next_item;
+};
+
+class MatroskaTagMultiDateItem : public MatroskaTagMultiItemBase {
+public:
+	MatroskaTagMultiDateItem();
+
+	time_t DateBegin;
+	time_t DateEnd;
+	///Pointer to next item
+	MatroskaTagMultiDateItem *next_item;
+};
+
+class MatroskaTagMultiEntityItem : public MatroskaTagMultiItemBase {
+public:
+	MatroskaTagMultiEntityItem();
+
+	UTFstring Name;
+	std::string URL;
+	std::string Email;
+	UTFstring Address;
+	///Pointer to next item
+	MatroskaTagMultiEntityItem *next_item;
+};
+
+class MatroskaTagMultiIdentifierItem : public MatroskaTagMultiItemBase {
+public:
+	MatroskaTagMultiIdentifierItem();
+=09
+	binary *BinaryData;
+	uint32 BinaryData_Length;
+	UTFstring StringData;
+	///Pointer to next item
+	MatroskaTagMultiIdentifierItem *next_item;
+};
+
+class MatroskaTagMultiLegalItem : public MatroskaTagMultiItemBase {
+public:
+	MatroskaTagMultiLegalItem();
+=09
+	std::string URL;
+	UTFstring Address;
+	UTFstring Text;
+	///Pointer to next item
+	MatroskaTagMultiLegalItem *next_item;
+};
+
+class MatroskaTagMultiTitleItem : public MatroskaTagMultiItemBase {
+public:
+	MatroskaTagMultiTitleItem();
+=09
+	UTFstring Name;
+	UTFstring SubTitle;
+	UTFstring Edition;
+	UTFstring Address;
+	std::string URL;
+	std::string Email;
+	std::string Language;
+	///Pointer to next item
+	MatroskaTagMultiTitleItem *next_item;
+};
+
+class MatroskaTagMultiComment
+{
+public:
+	MatroskaTagMultiComment();
+	~MatroskaTagMultiComment();
+	void AddItem(MatroskaTagMultiCommentItem *new_item);
+	MatroskaTagMultiCommentItem *FindTrackItemWithLang(char *language_id);
+	int GetMultiCommentCount();
+	MatroskaTagMultiCommentItem *GetItem(int requested_index);
+protected:
+  ///Pointer to the first item in the linked list
+	MatroskaTagMultiCommentItem *first_item;
+};
+
+class MatroskaTagMultiCommercial
+{
+public:
+	MatroskaTagMultiCommercial();
+	~MatroskaTagMultiCommercial();
+	void AddItem(MatroskaTagMultiCommercialItem *new_item);
+	MatroskaTagMultiCommercialItem *FindTrackItemWithType(int type_id);
+	int GetMultiCommercialCount();
+	MatroskaTagMultiCommercialItem *GetItem(int requested_index);
+	static char *ConvertTypeUIntToStr(uint16 type_id);
+	static uint16 ConvertTypeStrToUInt(char *type_str);
+protected:
+  ///Pointer to the first item in the linked list
+	MatroskaTagMultiCommercialItem *first_item;
+};
+
+class MatroskaTagMultiDate
+{
+public:
+	MatroskaTagMultiDate();
+	~MatroskaTagMultiDate();
+	void AddItem(MatroskaTagMultiDateItem *new_item);
+	MatroskaTagMultiDateItem *FindTrackItemWithType(int type_id);
+	int GetMultiDateCount();
+	MatroskaTagMultiDateItem *GetItem(int requested_index);
+	static char *ConvertTypeUIntToStr(uint16 type_id);
+	static uint16 ConvertTypeStrToUInt(char *type_str);
+protected:
+  ///Pointer to the first item in the linked list
+	MatroskaTagMultiDateItem *first_item;
+};
+
+class MatroskaTagMultiEntity
+{
+public:
+	MatroskaTagMultiEntity();
+	~MatroskaTagMultiEntity();
+	void AddItem(MatroskaTagMultiEntityItem *new_item);
+	MatroskaTagMultiEntityItem *FindTrackItemWithType(int type_id);
+	int GetMultiEntityCount();
+	MatroskaTagMultiEntityItem *GetItem(int requested_index);
+	static char *ConvertTypeUIntToStr(uint16 type_id);
+	static uint16 ConvertTypeStrToUInt(char *type_str);
+protected:
+  ///Pointer to the first item in the linked list
+	MatroskaTagMultiEntityItem *first_item;
+};
+
+class MatroskaTagMultiIdentifier
+{
+public:
+	MatroskaTagMultiIdentifier();
+	~MatroskaTagMultiIdentifier();
+	void AddItem(MatroskaTagMultiIdentifierItem *new_item);
+	MatroskaTagMultiIdentifierItem *FindTrackItemWithType(int type_id);
+	int GetMultiIdentifierCount();
+	MatroskaTagMultiIdentifierItem *GetItem(int requested_index);
+	static char *ConvertTypeUIntToStr(uint16 type_id);
+	static uint16 ConvertTypeStrToUInt(char *type_str);
+
+protected:
+  ///Pointer to the first item in the linked list
+	MatroskaTagMultiIdentifierItem *first_item;
+};
+
+class MatroskaTagMultiLegal
+{
+public:
+	MatroskaTagMultiLegal();
+	~MatroskaTagMultiLegal();
+	void AddItem(MatroskaTagMultiLegalItem *new_item);
+	MatroskaTagMultiLegalItem *FindTrackItemWithType(int type_id);
+	int GetMultiLegalCount();
+	MatroskaTagMultiLegalItem *GetItem(int requested_index);
+	static char *ConvertTypeUIntToStr(uint16 type_id);
+	static uint16 ConvertTypeStrToUInt(char *type_str);
+protected:
+  ///Pointer to the first item in the linked list
+	MatroskaTagMultiLegalItem *first_item;
+};
+
+class MatroskaTagMultiTitle
+{
+public:
+	MatroskaTagMultiTitle();
+	~MatroskaTagMultiTitle();
+	void AddItem(MatroskaTagMultiTitleItem *new_item);
+	MatroskaTagMultiTitleItem *FindTrackItemWithType(int type_id);
+	int GetMultiTitleCount();
+	MatroskaTagMultiTitleItem *GetItem(int requested_index);
+	static char *ConvertTypeUIntToStr(uint16 type_id);
+	static uint16 ConvertTypeStrToUInt(char *type_str);
+protected:
+  ///Pointer to the first item in the linked list
+	MatroskaTagMultiTitleItem *first_item;
+};
+
+class MatroskaSimpleTag {
+public:
+	MatroskaSimpleTag();	=09
+
+	static MatroskaSimpleTagOfficalListEntry &GetOfficalList(size_t i);
+	static TCHAR *GetOfficalList_Name(size_t i);
+	static TCHAR *GetOfficalList_Desc(size_t i);
+	UTFstring name;
+	UTFstring value;
+	bool bDelete;
+};
+
+class MatroskaSimpleTagList : public std::vector<MatroskaSimpleTag *> {
+public:
+	MatroskaSimpleTagList();
+	~MatroskaSimpleTagList();
+
+	UTFstring &GetSimpleTag(const char *name);
+	void SetSimpleTagValue(const char *name, const char *value);
+	void SetSimpleTagValue(const wchar_t *name, const wchar_t *value);
+	void Remove(size_t index);
+	void Remove(MatroskaSimpleTag *deleteTag);
+	size_t Lookup(MatroskaSimpleTag *tagLookup);
+	void Cleanup();
+};
+
+/*********************** Main Tag Class *************************/
+class MatroskaTagInfo {
+	public:
+		MatroskaTagInfo();
+		~MatroskaTagInfo();
+		//Merge another tag info data, leaving this tag left
+		void MergeWithThisTagInfo(MatroskaTagInfo *source_tags);
+			=09
+		//Functions to easily get all of the tags
+		//Returns the tag name of the tag index passed
+		static char *GetTagListStr(uint32 tag_index);
+		//Converts the tag name back to the tag index number
+		static uint32 GetTagListUInt(char* tag_name);
+		//Get the tag name and more infomation about a tag index
+		static char *MatroskaTagInfo::GetTagListStrInfo(uint32 tag_index);
+
+
+		//Base Tags
+		MatroskaTagUID Tag_TrackUID;
+		/// The UID of the chapter this Tag applies to
+		MatroskaTagUID Tag_ChapterUID;
+		MatroskaTagUID Tag_AttachmentUID;
+
+		UTFstring Tag_ArchivalLocation;
+		std::vector<binary> Tag_AudioEncryption;
+		double Tag_AudioGain;
+		std::string Tag_AudioGenre;
+		double Tag_AudioPeak;
+		std::string Tag_AudioSecondaryGenre;
+		UTFstring Tag_Bibliography;
+		double Tag_BPM;
+		uint32 Tag_CaptureDPI;
+		uint32 Tag_CapturePaletteSetting;
+		UTFstring Tag_Cropped;
+		uint32 Tag_DiscTrack;
+		UTFstring Tag_Encoder;
+		UTFstring Tag_EncodeSettings;
+		UTFstring Tag_File;
+		std::string Tag_InitialKey;
+		UTFstring Tag_Keywords;
+		std::string Tag_Language;
+		uint32 Tag_Length;
+		UTFstring Tag_Mood;
+		std::string Tag_OfficialAudioFileURL;
+		std::string Tag_OfficialAudioSourceURL;
+		std::string Tag_OriginalDimensions;
+		UTFstring Tag_OriginalMediaType;
+		uint32 Tag_PlayCounter;
+		uint32 Tag_PlaylistDelay;
+		int32 Tag_Popularimeter;
+		UTFstring Tag_Product;
+		std::vector<binary> Tag_Rating;
+		std::string Tag_RecordLocation;
+		uint32 Tag_SetPart;
+		UTFstring Tag_Source;
+		UTFstring Tag_SourceForm;
+		std::string Tag_SubGenre;
+		UTFstring Tag_Subject;
+		std::string Tag_SynchronisedTempo;
+		UTFstring Tag_SynchronisedText;
+		UTFstring Tag_UnsynchronisedText;
+		std::string Tag_UserDefinedURL;
+		std::vector<binary> Tag_VideoGenre;
+		std::vector<binary> Tag_VideoSecondaryGenre;
+	=09
+		//The amazing Multi-* tags
+		//Smart Multi-Comment Item Add
+		void AddMultiCommentItem(MatroskaTagMultiCommentItem *new_item);
+		MatroskaTagMultiComment *Tag_MultiComments;
+		//Smart Multi-Commercia Item Add
+		void AddMultiCommercialItem(MatroskaTagMultiCommercialItem *new_item);
+		MatroskaTagMultiCommercial *Tag_MultiCommercials;
+		//Smart Multi-Date Item Add
+		void AddMultiDateItem(MatroskaTagMultiDateItem *new_item);
+		MatroskaTagMultiDate *Tag_MultiDates;
+		//Smart Multi-Entity Item Add
+		void AddMultiEntityItem(MatroskaTagMultiEntityItem *new_item);
+		MatroskaTagMultiEntity *Tag_MultiEntities;
+		//Smart Multi-Identifier Item Add
+		void AddMultiIdentifierItem(MatroskaTagMultiIdentifierItem *new_item);
+		MatroskaTagMultiIdentifier *Tag_MultiIdentifiers;
+		//Smart Multi-Legal Item Add
+		void AddMultiLegalItem(MatroskaTagMultiLegalItem *new_item);
+		MatroskaTagMultiLegal	*Tag_MultiLegals;
+		//Smart Multi-Title Item Add
+		void AddMultiTitleItem(MatroskaTagMultiTitleItem *new_item);
+		MatroskaTagMultiTitle *Tag_MultiTitles;
+	=09
+		//This really shouldn't be here
+		//UTFstring Tag_MuxingApp;  //Now it isn't :P
+		//This really shoudn't be here
+		//UTFstring Tag_WritingApp; //Now it isn't :P
+
+		//Pointers to the correct Multi-* Tag element text
+		//Pointer to the Multi-Title field for the ID3 Title Field
+		UTFstring *Tag_Simple_Title;
+		//Pointer to the Multi-Entity field for ID3 Artist Field
+		UTFstring *Tag_Simple_Artist;
+		//Pointer to the Multi-Title field for ID3 Album Field
+		UTFstring *Tag_Simple_Album;
+
+		MatroskaSimpleTagList Tag_Simple_Tags;
+};
+
+class MatroskaTagList : public std::vector<MatroskaTagInfo *> {
+public:
+	MatroskaTagList();
+	~MatroskaTagList();
+
+	UTFstring &FindSimpleTag(const char *name);
+	/// Find a tag entry with the assigned track uid
+	/// \param bOnly If true the returned tag will only be assigned to the =
track uid, no other uids
+	/// \return NULL If not found
+	MatroskaTagInfo *FindByTrackUID(uint64 uid, bool bOnly =3D false);
+
+	void Remove(MatroskaTagInfo *tag);
+};
+
+#ifdef USE_NEW_MKV_TAG_SYSTEM
+
+enum MTag_TagTypes
+{
+	MTag_None =3D 0,
+	MTag_General =3D 100,
+	MTag_General_MultiComment,
+	MTag_General_MultiCommercial,
+	MTag_General_MultiDate,
+	MTag_General_MultiEntity,
+	MTag_General_MultiIdentifier,
+	MTag_General_MultiLegal,
+	MTag_General_MultiTitle,
+	MTag_General_Subject,//UTF-8
+	MTag_General_Bibliography,//UTF-8
+	MTag_General_Language,//string
+	MTag_General_Rating,//binary
+	MTag_General_Encoder,//UTF-8
+	MTag_General_EncodeSettings,//UTF-8
+	MTag_General_File,//UTF-8
+	MTag_General_ArchivalLocation,//UTF-8
+	MTag_General_RecordLocation,//string
+	MTag_General_Keywords,//UTF-8
+	MTag_General_Mood,//UTF-8
+	MTag_General_Source, //UTF-8
+	MTag_General_SourceForm, //UTF-8
+	MTag_General_Product,  	//UTF-8
+	MTag_General_OriginalMediaType, //UTF-8
+	MTag_General_PlayCounter, //u-integer
+	MTag_General_Popularimeter, //integer
+	MTag_Genres =3D 2000,
+	MTag_Genres_AudioGenre, //string 	The genre of the audio. (same as the =
TCON tag in ID3).
+	MTag_Genres_VideoGenre, //binary 	Genre of the video using a 4 byte ID.=
 More info about the content on the older page.
+	MTag_Genres_SubGenre, //string
+	MTag_AudioSpecific =3D 3000,
+	MTag_AudioSpecific_AudioEncryption,  	//binary 	This is an exact dump o=
f the AENC tag in ID3v2.4. It should never be used otherwise.
+	MTag_AudioSpecific_AudioGain, 	//float 	The gain to apply to reach 89db=
 SPL on playback.
+	MTag_AudioSpecific_AudioPeak,	//float 	The maximum absolute peak value =
of the item.
+	MTag_AudioSpecific_BPM, 	//float 	Contains the number of beats per minu=
te in the main part of the audio. This is general. (same as the TBPM tag =
in ID3).
+	MTag_AudioSpecific_Equalisation, 	//binary 	This is an exact dump of th=
e EQU2 tag in ID3v2.4. It should never be used otherwise.
+	MTag_AudioSpecific_DiscTrack, 	//u-integer 	Track number in the origina=
l CD. (same as the TRCK tag in ID3).
+	MTag_AudioSpecific_SetPart, 	//u-integer 	The total number of tracks on=
 a disc. (same as the TPOS tag in ID3).
+	MTag_AudioSpecific_InitialKey,//string 	The initial key that a musical =
track starts in. (same as the TKEY tag in ID3).
+	MTag_AudioSpecific_OfficialFileURL, 	//string 	A URL pointing to the of=
ficial webpage for this item. (same as the WOAF tag in ID3).
+	MTag_AudioSpecific_OfficialSourceURL, //string
+	MTag_ImageSpecific =3D 4000,
+	MTag_ImageSpecific_CaptureDPI, //u-integer  	Stores dots per inch setti=
ng of the digitizer used to produce the file, such as "300." (same as the=
 IDPI tag in RIFF).
+	MTag_ImageSpecific_CaptureLightness, //Binary 	Describes the changes in=
 lightness settings on the digitizer required to produce the file. Note t=
hat the format of this information depends on hardware used. (same as the=
 ILGT tag in RIFF).
+	MTag_ImageSpecific_CapturePaletteSetting, //u-integer 	Specifies the nu=
mber of colors requested when digitizing an image, such as "256." (same a=
s the IPLT tag in RIFF).
+	MTag_ImageSpecific_CaptureSharpness, //Binary 	Identifies the changes i=
n sharpness for the digitizer required to produce the file (the format de=
pends on the hardware used). (same as the ISHP tag in RIFF).
+	MTag_ImageSpecific_Cropped, //string 	Describes whether an image has be=
en cropped and, if so, how it was cropped. For example, "lower right corn=
er." (same as the ICRP tag in RIFF).
+	MTag_ImageSpecific_OriginalDimensions, //string
+};
+
+/// This is the base class for tags
+class MTagBase
+{
+public:
+	enum MTag_TagTypes type;
+};
+
+class MatroskaTagItem
+{
+public:
+	MatroskaTagItem();
+	~MatroskaTagItem();
+
+	/// Used Internally
+	MTag_TagTypes tag_type;
+
+	UTFstring *UTF_data;
+	std::string *string_data;
+	uint64 *uinteger_data;
+	int64 *integer_data;
+	double *float_data;
+	binary *binary_data;
+	uint64 binary_data_len;
+
+	//The amazing Multi-* tags
+	MatroskaTagMultiComment *MultiComment_data;
+	MatroskaTagMultiCommercial *MultiCommercial_data;
+	MatroskaTagMultiDate *MultiDate_data;
+	MatroskaTagMultiEntity *MultiEntity_data;
+	MatroskaTagMultiIdentifier *MultiIdentifier_data;
+	MatroskaTagMultiLegal	*MultiLegal_data;
+	MatroskaTagMultiTitle *MultiTitle_data;
+};
+
+class MatroskaTagList
+{
+public:
+	MatroskaTagList();
+	~MatroskaTagList();
+	void AddItem(MatroskaTagItem *new_item);
+	int DeleteItem(MatroskaTagItem *new_item);
+	int DeleteItem(int requested_index);
+	MatroskaTagItem *GetItem(int requested_index);
+	int GetCount();
+	MatroskaTagItem *FindTrackItemWithType(int type_id);
+protected:
+  ///Pointer to the first item in the linked list
+	MatroskaTagItem *first_item;
+	MatroskaTagItem *last_item;
+};
+
+#endif // USE_NEW_MKV_TAG_SYSTEM
+
+}; //End namespace MatroskaUtilsNamespace
+
+#endif // _MATROSKA_TAG_DATA_H_


Property changes on: trunk/MatroskaUtils/MatroskaTagData.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaTrackData.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaTrackData.h	2007-02-17 10:34:40 UTC (rev =
1276)
+++ trunk/MatroskaUtils/MatroskaTrackData.h	2007-02-17 10:55:54 UTC (rev =
1277)
@@ -1,355 +1,355 @@
-/*
- *  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
- *
- *  MatroskaTrackData.h
- *
- *  Copyright (C) Jory Stone - June 2003
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file MatroskaTrackData.h
-		\version \$Id: MatroskaTrackData.h,v 1.19 2004/02/18 06:52:18 jcsston =
Exp $
-    \brief Some general code to make working with Matroska easier
-		\author Jory Stone     <jcsston @ toughguy.net>
-	=09
-		Inspired by ;) John Cannon ([email protected]) (c) 2003
-*/
-
-#ifndef _MATROSKA_TRACK_DATA_H_
-#define _MATROSKA_TRACK_DATA_H_
-
-#ifdef WIN32
-#include <windows.h>
-#endif //WIN32
-#include <vector>
-
-#ifdef USING_CXIMAGE
-#include "CxImage/ximage.h"
-#endif // USING_CXIMAGE
-
-#include "MatroskaUtilsDebug.h"
-#include "MatroskaUtilsReader.h"
-
-// libebml includes
-#include "ebml/StdIOCallback.h"
-#include "ebml/EbmlTypes.h"
-#include "ebml/EbmlHead.h"
-#include "ebml/EbmlVoid.h"
-#include "ebml/EbmlCrc32.h"
-#include "ebml/EbmlSubHead.h"
-#include "ebml/EbmlStream.h"
-#include "ebml/EbmlBinary.h"
-#include "ebml/EbmlString.h"
-#include "ebml/EbmlUnicodeString.h"
-#include "ebml/EbmlContexts.h"
-#include "ebml/EbmlVersion.h"
-
-// libmatroska includes
-#include "matroska/KaxConfig.h"
-#include "matroska/KaxBlock.h"
-#include "matroska/KaxSegment.h"
-#include "matroska/KaxContexts.h"
-#include "matroska/KaxSeekHead.h"
-#include "matroska/KaxTracks.h"
-#include "matroska/KaxInfo.h"
-#include "matroska/KaxInfoData.h"
-#include "matroska/KaxTags.h"
-#include "matroska/KaxTag.h"
-#include "matroska/KaxTagMulti.h"
-#include "matroska/KaxCluster.h"
-#include "matroska/KaxClusterData.h"
-#include "matroska/KaxTrackAudio.h"
-#include "matroska/KaxTrackVideo.h"
-#include "matroska/KaxAttachments.h"
-#include "matroska/KaxAttached.h"
-#include "matroska/KaxVersion.h"
-
-#define TIMECODE_SCALE  1000000
-
-#include "MatroskaTagData.h"
-
-namespace MatroskaUtilsNamespace {
-
-extern char *iso639_2B_codes[];
-
-class MatroskaSegmentInfo {
-public:
-	MatroskaSegmentInfo();
-	virtual ~MatroskaSegmentInfo();
-
-	virtual void SetDuration(float the_duration);
-	virtual float GetDuration();
-	/// Return a Nicely formated Duration
-	virtual const char *GetNiceDuration();
-	virtual UTFstring GetNiceDurationW();
-	virtual void SetTimecodeScale(uint64 timecodeScale);
-	virtual uint64 GetTimecodeScale();
-
-	float m_infoDuration;
-	std::string m_infoNiceDuration;
-	uint64 m_infoTimecodeScale;
-	std::string m_infoDate;
-	UTFstring m_infoFilename;
-	UTFstring m_infoWritingApp;
-	UTFstring m_infoMuxingApp;
-	UTFstring m_infoTitle;
-};
-
-typedef struct {
-    binary wFormatTag[2];
-    uint16 nChannels;
-    uint32 nSamplesPerSec;
-    uint32 nAvgBytesPerSec;
-    uint16 nBlockAlign;
-    uint16 wBitsPerSample;
-    uint16 cbSize;
-} acm_WAVEFORMATEX;
-
-class MatroskaAudioTrackInfo {
-	public:
-		MatroskaAudioTrackInfo();
-		~MatroskaAudioTrackInfo();
-		static const char *GetWaveFormatName(uint16 formatTag);
-		//Audio Track Info
-		float audio_SampleRate;
-		float audio_OutputSampleRate;
-		uint8 audio_Channels;
-		uint8 audio_BitDepth;
-};
-
-typedef struct {
-  uint32  bi_size;
-  uint32  bi_width;
-  uint32  bi_height;
-  uint16  bi_planes;
-  uint16  bi_bit_count;
-  uint32  bi_compression;
-  uint32  bi_size_image;
-  uint32  bi_x_pels_per_meter;
-  uint32  bi_y_pels_per_meter;
-  uint32  bi_clr_used;
-  uint32  bi_clr_important;
-} vfw_BITMAPINFOHEADER;
-
-class MatroskaVideoTrackInfo {
-	public:
-		MatroskaVideoTrackInfo();
-		~MatroskaVideoTrackInfo();
-		static const char *GetFourCCName(const char *fourcc);
-		//Video Track Info
-		uint16 video_Width;
-		uint16 video_Height;
-		uint16 video_DisplayWidth;
-		uint16 video_DisplayHeight;
-		float video_FrameRate;
-		uint32 video_ColorDepth;
-		uint8 video_Interlaced;	=09
-};
-
-class MatroskaTrackInfo {
-	public:
-		/// Initializes the class
-		MatroskaTrackInfo(MatroskaSegmentInfo *segment);
-		/// Initializes the class with a UID
-		/// \param trackUID The UID to use for the new MatroskaTrackInfo
-		MatroskaTrackInfo(MatroskaSegmentInfo *segment, uint64 trackUID);
-		/// Destroys the class
-		virtual ~MatroskaTrackInfo();
-	=09
-    /// Returns the track number of this track, please note that using U=
ID's is highly recommend
-		/// \return The number of this track
-		virtual uint16 GetTrackNumber();
-		/// Sets the track number of this track, please note that using UID's =
is highly recommend
-		/// \param trackNumber The track number to set for this track
-		virtual void SetTrackNumber(uint16 trackNumber);
-		/// Returns the UID of this track
-		/// \return The UID of this track
-		virtual uint64 GetTrackUID();
-		/// Sets the UID of this track
-		/// \param trackUID The UID to change this track to
-		virtual void SetTrackUID(uint64 trackUID);
-		/// Returns the track type of this track
-	=09
-		virtual uint8 GetTrackType();
-		/// Returns the track type of this track as char *
-		virtual TCHAR *GetTrackTypeStr();
-		/// Sets the track type of this track
-		virtual void SetTrackType(uint8 trackType);
-		/// Returns the codec ID of this track
-		virtual const char* GetCodecID();
-		/// Sets the codec ID of this track
-		virtual void SetCodecID(const char* codecID);
-
-		static const char *GetLanguageNameFromISO639(const char *iso639_code);
-		virtual const char *GetLanguageName();	=09
-		/// Returns a pointer to the video information for this track or NULL =
if it is not a video track.
-		virtual MatroskaVideoTrackInfo* GetVideoInfo();
-		/// Sets the video information for this track.
-		virtual void SetVideoInfo(MatroskaVideoTrackInfo* videoInfo);
-		/// Returns a pointer to the audio information for this track or NULL =
if it is not a audio track.
-		virtual MatroskaAudioTrackInfo* GetAudioInfo();
-		/// Sets the audio information for this track.
-		virtual void SetAudioInfo(MatroskaAudioTrackInfo* audioInfo);
-		/// Returns a pointer to the Tag info for this track or NULL if there =
is not a Tag segment.
-		//MatroskaTagInfo* GetTagInfo();
-		/// Sets the Tag information for this track.
-		//void SetTagInfo(MatroskaTagInfo* tagInfo);
-		/// Merge another track info data, leaving this track left
-		//void MergeWithThisTrackInfo(MatroskaTrackInfo *source_track);
-		=09
-		uint16 m_trackNumber;
-		uint64 m_trackUID;
-		uint8 m_trackType;
-
-		std::string m_codecID;
-		/// Old style FourCC or ACM ID
-		std::string m_CodecOldID;
-		uint32 m_min_cache;
-		uint32 m_max_cache;
-		uint32 m_lacing_flag;
-		uint32 m_default_flag;
-
-		//Lanuage of track
-		std::string m_trackLanguage;
-
-		MatroskaSegmentInfo *m_segmentInfo;
-	protected:
-		MatroskaVideoTrackInfo* m_videoInfo;
-		MatroskaAudioTrackInfo* m_audioInfo;
-		//MatroskaTagInfo* m_tagInfo;
-};
-
-class MatroskaTrackInfoList : public std::vector<MatroskaTrackInfo *> {
-public:
-	MatroskaTrackInfoList();
-	~MatroskaTrackInfoList();
-	void AddItem(MatroskaTrackInfo *new_item);
-	//MatroskaTrackInfo *FindTrackListItemWithType(int type_id);
-	size_type GetListCount() { return size(); };
-	MatroskaTrackInfo *operator[] (uint16 requested_index) { return at(requ=
ested_index); };
-protected:
-
-};
-
-class MatroskaAttachmentItem {
-public:
-	MatroskaAttachmentItem();
-	~MatroskaAttachmentItem();
-	bool IsExt(const wchar_t *ext);
-
-	const wchar_t *GetMatroskaFilename();
-	const char *GetMatroskaFilename_ASCII();
-	int SetMatroskaFilename(const wchar_t *new_filename);=09
-	int SetMatroskaFilename(const char *new_filename);
-
-	/// Get the filename of the attached file without the path
-	/// Example The filename is "C:\videos\cover_The Matrix.jpg", This func=
tion will return "cover_The Matrix.jpg"
-	/// \warning Returned string is freed by the MatroskaAttachmentItem cla=
ss=09
-	const wchar_t *GetAttachmentFilenameOnly();
-	/// Get the filename of the attached file without the path (ASCII versi=
on)
-	/// Example The filename is "C:\videos\cover_The Matrix.jpg", This func=
tion will return "cover_The Matrix.jpg"
-	/// \warning Returned string is freed by the MatroskaAttachmentItem cla=
ss=09
-	const char *GetAttachmentFilenameOnly_ASCII();
-=09
-	/// Get the filename of the attached file
-	/// \warning Returned string is freed by the MatroskaAttachmentItem cla=
ss
-	const wchar_t *GetAttachmentFilename();
-	/// Get the filename of the attached file (ASCII version)
-	/// \warning Returned string is freed by the MatroskaAttachmentItem cla=
ss
-	const char *GetAttachmentFilename_ASCII();
-	int SetAttachmentFilename(const wchar_t *new_filename);=09
-	int SetAttachmentFilename(const char *new_filename);
-
-	/// Read the actual data of the attached file,
-	/// \warning This reads all the data into memory before returning, so b=
e careful with large attachments
-	binary *GetAttachmentData();
-	uint32 GetAttachmentSize();
-
-	/// Save the attachment to a file
-	int SaveTo(JString saveFilename);
-	/// Get the filesize in a nice format
-	/// For example, The attached file is 100,043 bytes, This function will=
 return "100.04KB"
-	/// \warning Returned string is freed by the ~MatroskaAttachmentItem
-	const char *GetNiceSize();
-	bool IsCover();
-#ifdef USING_CXIMAGE
-	CxImage *GetCxImage();
-	bool bResized;
-	uint32 GetAttachmentImageType();
-	std::string GetImageInfo();
-#endif // USING_CXIMAGE
-
-#ifdef WIN32
-	/// Open this attachment with the correct program (Open)
-	/// \param hwndDlg Handle to a dialog to use for displaying MessageBox =
can be NULL
-	/// \retval 0 Everything A ok
-	/// \retval 1 Failed to run shell program
-	/// \retval 3 Unable to open output file
-	/// \retval -1 General Error
-	int OpenViaShell(HWND hwndDlg);
-#endif
-
-	uint64 attachmentUID;
-	std::string attachmentMimeType;
-	UTFstring attachmentDescription;
-
-	uint64 attachmentMatroskaFileDataStart;
-	uint32 attachmentMatroskaFileDataLength;
-
-	MatroskaAttachmentItem *next_item;
-protected:
-
-#ifdef USING_CXIMAGE
-	CxImage *m_AttachmentImage;
-#endif // USING_CXIMAGE
-
-	UTFstring attach_size;
-	//Filename of attached file
-	UTFstring m_AttachFilename;=09
-	//Filename only of attached file (no path)
-	UTFstring m_AttachFilenameOnly;=09
-	//Filename of matroska that hass the attached file
-	UTFstring matroska_filename;
-
-	binary *buffer;
-};
-
-class MatroskaAttachmentsList : public std::vector<MatroskaAttachmentIte=
m *> {
-public:
-	MatroskaAttachmentsList();
-	~MatroskaAttachmentsList();
-
-	/// Add a Attachment item to the list
-	void AddItem(MatroskaAttachmentItem *new_item) { push_back(new_item); }=
;
-	/// Returns the number of attachments found in the file.
-	uint32 GetNumberOfAttachments() { return size(); };
-	/// Returns a pointer to the specified Attachment
-	/// This function is simply an alias for the overloaded operator[]
-	/// \param requested_index The 0 based index of the Attachment
-	/// \return A pointer to the requested MatroskaAttachmentItem or NULL i=
f the index is out of range
-	MatroskaAttachmentItem *GetAttachment(uint32 requested_index) { return =
at(requested_index); };
-	/// Returns a pointer to the specified Attachment
-	/// \param requested_index The 0 based index of the Attachment
-	/// \return A pointer to the requested MatroskaAttachmentItem or NULL i=
f the index is out of range
-	MatroskaAttachmentItem *operator[] (uint32 requested_index) { return at=
(requested_index); };
-};
-
-}; //End namespace MatroskaUtilsNamespace
-
-#endif // _MATROSKA_TRACK_DATA_H_
-
+/*
+ *  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
+ *
+ *  MatroskaTrackData.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file MatroskaTrackData.h
+		\version \$Id: MatroskaTrackData.h,v 1.19 2004/02/18 06:52:18 jcsston =
Exp $
+    \brief Some general code to make working with Matroska easier
+		\author Jory Stone     <jcsston @ toughguy.net>
+	=09
+		Inspired by ;) John Cannon ([email protected]) (c) 2003
+*/
+
+#ifndef _MATROSKA_TRACK_DATA_H_
+#define _MATROSKA_TRACK_DATA_H_
+
+#ifdef WIN32
+#include <windows.h>
+#endif //WIN32
+#include <vector>
+
+#ifdef USING_CXIMAGE
+#include "CxImage/ximage.h"
+#endif // USING_CXIMAGE
+
+#include "MatroskaUtilsDebug.h"
+#include "MatroskaUtilsReader.h"
+
+// libebml includes
+#include "ebml/StdIOCallback.h"
+#include "ebml/EbmlTypes.h"
+#include "ebml/EbmlHead.h"
+#include "ebml/EbmlVoid.h"
+#include "ebml/EbmlCrc32.h"
+#include "ebml/EbmlSubHead.h"
+#include "ebml/EbmlStream.h"
+#include "ebml/EbmlBinary.h"
+#include "ebml/EbmlString.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlContexts.h"
+#include "ebml/EbmlVersion.h"
+
+// libmatroska includes
+#include "matroska/KaxConfig.h"
+#include "matroska/KaxBlock.h"
+#include "matroska/KaxSegment.h"
+#include "matroska/KaxContexts.h"
+#include "matroska/KaxSeekHead.h"
+#include "matroska/KaxTracks.h"
+#include "matroska/KaxInfo.h"
+#include "matroska/KaxInfoData.h"
+#include "matroska/KaxTags.h"
+#include "matroska/KaxTag.h"
+#include "matroska/KaxTagMulti.h"
+#include "matroska/KaxCluster.h"
+#include "matroska/KaxClusterData.h"
+#include "matroska/KaxTrackAudio.h"
+#include "matroska/KaxTrackVideo.h"
+#include "matroska/KaxAttachments.h"
+#include "matroska/KaxAttached.h"
+#include "matroska/KaxVersion.h"
+
+#define TIMECODE_SCALE  1000000
+
+#include "MatroskaTagData.h"
+
+namespace MatroskaUtilsNamespace {
+
+extern char *iso639_2B_codes[];
+
+class MatroskaSegmentInfo {
+public:
+	MatroskaSegmentInfo();
+	virtual ~MatroskaSegmentInfo();
+
+	virtual void SetDuration(float the_duration);
+	virtual float GetDuration();
+	/// Return a Nicely formated Duration
+	virtual const char *GetNiceDuration();
+	virtual UTFstring GetNiceDurationW();
+	virtual void SetTimecodeScale(uint64 timecodeScale);
+	virtual uint64 GetTimecodeScale();
+
+	float m_infoDuration;
+	std::string m_infoNiceDuration;
+	uint64 m_infoTimecodeScale;
+	std::string m_infoDate;
+	UTFstring m_infoFilename;
+	UTFstring m_infoWritingApp;
+	UTFstring m_infoMuxingApp;
+	UTFstring m_infoTitle;
+};
+
+typedef struct {
+    binary wFormatTag[2];
+    uint16 nChannels;
+    uint32 nSamplesPerSec;
+    uint32 nAvgBytesPerSec;
+    uint16 nBlockAlign;
+    uint16 wBitsPerSample;
+    uint16 cbSize;
+} acm_WAVEFORMATEX;
+
+class MatroskaAudioTrackInfo {
+	public:
+		MatroskaAudioTrackInfo();
+		~MatroskaAudioTrackInfo();
+		static const char *GetWaveFormatName(uint16 formatTag);
+		//Audio Track Info
+		float audio_SampleRate;
+		float audio_OutputSampleRate;
+		uint8 audio_Channels;
+		uint8 audio_BitDepth;
+};
+
+typedef struct {
+  uint32  bi_size;
+  uint32  bi_width;
+  uint32  bi_height;
+  uint16  bi_planes;
+  uint16  bi_bit_count;
+  uint32  bi_compression;
+  uint32  bi_size_image;
+  uint32  bi_x_pels_per_meter;
+  uint32  bi_y_pels_per_meter;
+  uint32  bi_clr_used;
+  uint32  bi_clr_important;
+} vfw_BITMAPINFOHEADER;
+
+class MatroskaVideoTrackInfo {
+	public:
+		MatroskaVideoTrackInfo();
+		~MatroskaVideoTrackInfo();
+		static const char *GetFourCCName(const char *fourcc);
+		//Video Track Info
+		uint16 video_Width;
+		uint16 video_Height;
+		uint16 video_DisplayWidth;
+		uint16 video_DisplayHeight;
+		float video_FrameRate;
+		uint32 video_ColorDepth;
+		uint8 video_Interlaced;	=09
+};
+
+class MatroskaTrackInfo {
+	public:
+		/// Initializes the class
+		MatroskaTrackInfo(MatroskaSegmentInfo *segment);
+		/// Initializes the class with a UID
+		/// \param trackUID The UID to use for the new MatroskaTrackInfo
+		MatroskaTrackInfo(MatroskaSegmentInfo *segment, uint64 trackUID);
+		/// Destroys the class
+		virtual ~MatroskaTrackInfo();
+	=09
+    /// Returns the track number of this track, please note that using U=
ID's is highly recommend
+		/// \return The number of this track
+		virtual uint16 GetTrackNumber();
+		/// Sets the track number of this track, please note that using UID's =
is highly recommend
+		/// \param trackNumber The track number to set for this track
+		virtual void SetTrackNumber(uint16 trackNumber);
+		/// Returns the UID of this track
+		/// \return The UID of this track
+		virtual uint64 GetTrackUID();
+		/// Sets the UID of this track
+		/// \param trackUID The UID to change this track to
+		virtual void SetTrackUID(uint64 trackUID);
+		/// Returns the track type of this track
+	=09
+		virtual uint8 GetTrackType();
+		/// Returns the track type of this track as char *
+		virtual TCHAR *GetTrackTypeStr();
+		/// Sets the track type of this track
+		virtual void SetTrackType(uint8 trackType);
+		/// Returns the codec ID of this track
+		virtual const char* GetCodecID();
+		/// Sets the codec ID of this track
+		virtual void SetCodecID(const char* codecID);
+
+		static const char *GetLanguageNameFromISO639(const char *iso639_code);
+		virtual const char *GetLanguageName();	=09
+		/// Returns a pointer to the video information for this track or NULL =
if it is not a video track.
+		virtual MatroskaVideoTrackInfo* GetVideoInfo();
+		/// Sets the video information for this track.
+		virtual void SetVideoInfo(MatroskaVideoTrackInfo* videoInfo);
+		/// Returns a pointer to the audio information for this track or NULL =
if it is not a audio track.
+		virtual MatroskaAudioTrackInfo* GetAudioInfo();
+		/// Sets the audio information for this track.
+		virtual void SetAudioInfo(MatroskaAudioTrackInfo* audioInfo);
+		/// Returns a pointer to the Tag info for this track or NULL if there =
is not a Tag segment.
+		//MatroskaTagInfo* GetTagInfo();
+		/// Sets the Tag information for this track.
+		//void SetTagInfo(MatroskaTagInfo* tagInfo);
+		/// Merge another track info data, leaving this track left
+		//void MergeWithThisTrackInfo(MatroskaTrackInfo *source_track);
+		=09
+		uint16 m_trackNumber;
+		uint64 m_trackUID;
+		uint8 m_trackType;
+
+		std::string m_codecID;
+		/// Old style FourCC or ACM ID
+		std::string m_CodecOldID;
+		uint32 m_min_cache;
+		uint32 m_max_cache;
+		uint32 m_lacing_flag;
+		uint32 m_default_flag;
+
+		//Lanuage of track
+		std::string m_trackLanguage;
+
+		MatroskaSegmentInfo *m_segmentInfo;
+	protected:
+		MatroskaVideoTrackInfo* m_videoInfo;
+		MatroskaAudioTrackInfo* m_audioInfo;
+		//MatroskaTagInfo* m_tagInfo;
+};
+
+class MatroskaTrackInfoList : public std::vector<MatroskaTrackInfo *> {
+public:
+	MatroskaTrackInfoList();
+	~MatroskaTrackInfoList();
+	void AddItem(MatroskaTrackInfo *new_item);
+	//MatroskaTrackInfo *FindTrackListItemWithType(int type_id);
+	size_type GetListCount() { return size(); };
+	MatroskaTrackInfo *operator[] (uint16 requested_index) { return at(requ=
ested_index); };
+protected:
+
+};
+
+class MatroskaAttachmentItem {
+public:
+	MatroskaAttachmentItem();
+	~MatroskaAttachmentItem();
+	bool IsExt(const wchar_t *ext);
+
+	const wchar_t *GetMatroskaFilename();
+	const char *GetMatroskaFilename_ASCII();
+	int SetMatroskaFilename(const wchar_t *new_filename);=09
+	int SetMatroskaFilename(const char *new_filename);
+
+	/// Get the filename of the attached file without the path
+	/// Example The filename is "C:\videos\cover_The Matrix.jpg", This func=
tion will return "cover_The Matrix.jpg"
+	/// \warning Returned string is freed by the MatroskaAttachmentItem cla=
ss=09
+	const wchar_t *GetAttachmentFilenameOnly();
+	/// Get the filename of the attached file without the path (ASCII versi=
on)
+	/// Example The filename is "C:\videos\cover_The Matrix.jpg", This func=
tion will return "cover_The Matrix.jpg"
+	/// \warning Returned string is freed by the MatroskaAttachmentItem cla=
ss=09
+	const char *GetAttachmentFilenameOnly_ASCII();
+=09
+	/// Get the filename of the attached file
+	/// \warning Returned string is freed by the MatroskaAttachmentItem cla=
ss
+	const wchar_t *GetAttachmentFilename();
+	/// Get the filename of the attached file (ASCII version)
+	/// \warning Returned string is freed by the MatroskaAttachmentItem cla=
ss
+	const char *GetAttachmentFilename_ASCII();
+	int SetAttachmentFilename(const wchar_t *new_filename);=09
+	int SetAttachmentFilename(const char *new_filename);
+
+	/// Read the actual data of the attached file,
+	/// \warning This reads all the data into memory before returning, so b=
e careful with large attachments
+	binary *GetAttachmentData();
+	uint32 GetAttachmentSize();
+
+	/// Save the attachment to a file
+	int SaveTo(JString saveFilename);
+	/// Get the filesize in a nice format
+	/// For example, The attached file is 100,043 bytes, This function will=
 return "100.04KB"
+	/// \warning Returned string is freed by the ~MatroskaAttachmentItem
+	const char *GetNiceSize();
+	bool IsCover();
+#ifdef USING_CXIMAGE
+	CxImage *GetCxImage();
+	bool bResized;
+	uint32 GetAttachmentImageType();
+	std::string GetImageInfo();
+#endif // USING_CXIMAGE
+
+#ifdef WIN32
+	/// Open this attachment with the correct program (Open)
+	/// \param hwndDlg Handle to a dialog to use for displaying MessageBox =
can be NULL
+	/// \retval 0 Everything A ok
+	/// \retval 1 Failed to run shell program
+	/// \retval 3 Unable to open output file
+	/// \retval -1 General Error
+	int OpenViaShell(HWND hwndDlg);
+#endif
+
+	uint64 attachmentUID;
+	std::string attachmentMimeType;
+	UTFstring attachmentDescription;
+
+	uint64 attachmentMatroskaFileDataStart;
+	uint32 attachmentMatroskaFileDataLength;
+
+	MatroskaAttachmentItem *next_item;
+protected:
+
+#ifdef USING_CXIMAGE
+	CxImage *m_AttachmentImage;
+#endif // USING_CXIMAGE
+
+	UTFstring attach_size;
+	//Filename of attached file
+	UTFstring m_AttachFilename;=09
+	//Filename only of attached file (no path)
+	UTFstring m_AttachFilenameOnly;=09
+	//Filename of matroska that hass the attached file
+	UTFstring matroska_filename;
+
+	binary *buffer;
+};
+
+class MatroskaAttachmentsList : public std::vector<MatroskaAttachmentIte=
m *> {
+public:
+	MatroskaAttachmentsList();
+	~MatroskaAttachmentsList();
+
+	/// Add a Attachment item to the list
+	void AddItem(MatroskaAttachmentItem *new_item) { push_back(new_item); }=
;
+	/// Returns the number of attachments found in the file.
+	uint32 GetNumberOfAttachments() { return size(); };
+	/// Returns a pointer to the specified Attachment
+	/// This function is simply an alias for the overloaded operator[]
+	/// \param requested_index The 0 based index of the Attachment
+	/// \return A pointer to the requested MatroskaAttachmentItem or NULL i=
f the index is out of range
+	MatroskaAttachmentItem *GetAttachment(uint32 requested_index) { return =
at(requested_index); };
+	/// Returns a pointer to the specified Attachment
+	/// \param requested_index The 0 based index of the Attachment
+	/// \return A pointer to the requested MatroskaAttachmentItem or NULL i=
f the index is out of range
+	MatroskaAttachmentItem *operator[] (uint32 requested_index) { return at=
(requested_index); };
+};
+
+}; //End namespace MatroskaUtilsNamespace
+
+#endif // _MATROSKA_TRACK_DATA_H_
+


Property changes on: trunk/MatroskaUtils/MatroskaTrackData.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaUtils.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaUtils.h	2007-02-17 10:34:40 UTC (rev 1276=
)
+++ trunk/MatroskaUtils/MatroskaUtils.h	2007-02-17 10:55:54 UTC (rev 1277=
)
@@ -1,338 +1,338 @@
-/**
-	*  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
-	*
-	*  MatroskaUtils.h
-	*
-	*  Copyright (C) Jory Stone - June 2003
-	*  Copyright (C) John Cannon - 2003
-	*
-	*
-	*  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
-	*  it under the terms of the GNU General Public License as published by
-	*  the Free Software Foundation; either version 2, or (at your option)
-	*  any later version.
-	*
-	*  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
-	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	*  GNU General Public License for more details.
-	*
-	*  You should have received a copy of the GNU General Public License
-	*  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
-	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
-	*
-*/
-
-/*!
-    \file MatroskaUtils.h
-		\version \$Id: MatroskaUtils.h,v 1.38 2004/03/20 05:08:31 jcsston Exp =
$
-    \brief Some general code to make working with Matroska easier
-		\author Jory Stone     <jcsston @ toughguy.net>
-		\author John Cannon    <spyder482 @ yahoo.com>
-	=09
-		Inspired by ;) John Cannon ([email protected]) (c) 2003
-*/
-
-#ifndef _MATROSKA_UTILS_H_
-#define _MATROSKA_UTILS_H_
-
-#include "MatroskaUtilsDebug.h"
-#include "MatroskaUtilsReader.h"
-#include "JCThread.h"
-#ifdef USING_BITRATE_INFO
-#include "MatroskaUtilsBitrate.h"
-#endif
-
-
-//standard includes
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <vector>
-#include <time.h>
-#include <malloc.h>
-#include <process.h>
-
-#ifdef USING_TINYXML
-#include "tinyxml.h"
-#endif
-
-// libebml includes
-#include "ebml/StdIOCallback.h"
-#include "ebml/EbmlTypes.h"
-#include "ebml/EbmlHead.h"
-#include "ebml/EbmlVoid.h"
-#include "ebml/EbmlCrc32.h"
-#include "ebml/EbmlSubHead.h"
-#include "ebml/EbmlStream.h"
-#include "ebml/EbmlBinary.h"
-#include "ebml/EbmlString.h"
-#include "ebml/EbmlUnicodeString.h"
-#include "ebml/EbmlContexts.h"
-#include "ebml/EbmlVersion.h"
-
-// libmatroska includes
-#include "matroska/KaxConfig.h"
-#include "matroska/KaxBlock.h"
-#include "matroska/KaxSegment.h"
-#include "matroska/KaxContexts.h"
-#include "matroska/KaxSeekHead.h"
-#include "matroska/KaxTracks.h"
-#include "matroska/KaxInfo.h"
-#include "matroska/KaxInfoData.h"
-#include "matroska/KaxTags.h"
-#include "matroska/KaxTag.h"
-#include "matroska/KaxTagMulti.h"
-#include "matroska/KaxCluster.h"
-#include "matroska/KaxClusterData.h"
-#include "matroska/KaxTrackAudio.h"
-#include "matroska/KaxTrackVideo.h"
-#include "matroska/KaxAttachments.h"
-#include "matroska/KaxAttached.h"
-#include "matroska/KaxChapters.h"
-#include "matroska/KaxVersion.h"
-
-#include "MatroskaTrackData.h"
-#include "MatroskaChapterData.h"
-#include "JList.h"
-
-namespace MatroskaUtilsNamespace {
-
-using namespace LIBEBML_NAMESPACE;
-using namespace LIBMATROSKA_NAMESPACE;
-
-/// The working horse of the CDL, Shell Ext.
-/// /par Memory Usage test 08-27-2003
-/// For file "mew_mew_attachment.mkv" 19 tracks
-/// 20 parsers, 175,886 bytes
-/// For file "Copy (2) of Copy of tag_test_mkvmerge.mkv" video + lots of=
 tags
-/// 20 parsers, 102,244 bytese
-/// For file "Voyager - Good Shepherd.mkv" Xvid video+Vorbis
-/// 20 parsers, 81,082 bytes
-/// For file "pink2.mka" MP3 + Some tags
-/// 10 Parsers, 47,025 bytes
-/// 20 parsers, 89,503 bytes
-class MatroskaInfoParser {
-	public:
-		/// Initializes the class
-		/// \param MatroskaFilename The filename of a Matroska file to parse
-		MatroskaInfoParser(const wchar_t *MatroskaFilename);
-		MatroskaInfoParser(const char *MatroskaFilename);	=09
-		/// Reset values to defaults (not the filename)
-		virtual int Initialize();
-		/// Call this to check if the file is valid
-		bool IsValid() { TRACE("MatroskaInfoParser::IsValid()"); return m_IsVa=
lid;}
-		/// Destroys the class
-		virtual ~MatroskaInfoParser();
-    /// Detects if a file is a Matroska file or not
-    /// \param file_to_check The filename of the Matroska file to detect
-    /// \return True if the file is a Matroska file, false otherwise
-   // static bool CheckForMatroska(char* file_to_check);
-		virtual bool IsMatroska(JString file_to_check);
-		//bool IsMatroska(const wchar_t* file_to_check);
-		/// Controls if we try to read the tags or not.
-		/// If we do read the tags and the file doesn't have a SeekEntry for t=
he Tags element
-		/// or doesn't even have a Tags element it will take a long time depen=
ding on the file size
-		/// \param passed_readTags If set to true we will parse the tags
-		//void SetReadTags(bool passed_readTags =3D true);
-		/// Controls if we parse the whole file
-		/// This will need to be set to true in order to scan for Attachments
-		/// \param passed_parse_whole_file If set to true we will parse the wh=
ole file
-		//void SetParseWholeFile(bool passed_parse_whole_file =3D true);	=09
-		/// Parses the file's contents to retrieve the data needed
-		/// \retval 0 if successful
-		/// \retval 1 if the file isn't a valid Matroska file
-		/// \retval 5 if the file is a EBML file but the DocType isn't Matrosk=
a
-		virtual int ParseFile();
-		/// NON-WORKING
-		/// \param output_filename The file to copy the current matroska file =
to
-		virtual int CopyFile(char *output_filename);
-		/// Write out the tags from memory to the opened Matroska file
-		virtual int WriteTags();
-		/// Updates the Display Size or AR  in the currently opened Matroska f=
ile
-		/// \param track_no The track number of the video track to update
-		/// \param new_display_size_width The display width to write
-		/// \param new_display_size_height The display height to write
-		/// \retval 0 if the new Display Size was written successfully
-		/// \retval 1 if the file wasn't a Matroska file or couldn't be opened
-		/// \retval 2 if the file couldn't be opened for writing
-		/// \retval 3 if the file didn't have DisplaySize elements
-		virtual int WriteDisplaySize(uint8 track_no, uint16 new_display_size_w=
idth, uint16 new_display_size_height);
-		/// Updates the Language of a track in the currently opened Matroska f=
ile
-		/// \param track_no The track number of the video track to update
-		/// \param new_lang The Language Code to write
-		/// \retval 0 if the new Display Size was written successfully
-		/// \retval 1 if the file wasn't a Matroska file or couldn't be opened
-		/// \retval 2 if the file couldn't be opened for writing
-		/// \retval 3 if the file didn't have the Language of a track already =
written
-		/// \retval 4 if the Language of a track already written was too small=
 to put the new value
-		virtual int WriteLanguage(uint8 track_no, std::string new_lang);
-
-		/// Get number of tracks found in the file
-		/// \return The number of tracks found in the currently opened Matrosk=
a file
-		virtual int GetNumberOfTracks();
-		/// Lookup a track by it's UID and returns a pointer to the track's in=
formation
-		/// \param trackUID The UID of the track you wish to find
-		/// \return A MatroskaTrackInfo pointer to the found track or NULL if =
the track couldn't be found	=09
-		virtual MatroskaTrackInfo *GetTrackInfoByUID(uint64 trackUID);
-		/// Lookup a track by it's number and returns a pointer to the track's=
 information
-		/// This isn't the best way to find a specfic track, use GetTrackInfoB=
yUID() instead
-		/// but this is a good way to go through each track, say if you were l=
isting all the track found
-		/// \param trackNumber The number of the track you wish to find, the v=
alid range is the return value of GetNumberOfTracks() to 1
-		/// \return A pointer to a MatroskaTrackInfo of the found track or NUL=
L if the track couldn't be found	=09
-		virtual MatroskaTrackInfo *GetTrackInfo(int trackNumber);
-		/// Get the first Video track
-		virtual MatroskaTrackInfo *GetFirstVideoTrack();
-		/// Get the first Audio track
-		virtual MatroskaTrackInfo *GetFirstAudioTrack();
-		virtual MatroskaTrackInfo *GetFirstSubtitleTrack();
-		/// Return a pointer to the global track info, (includes the Info segm=
ent and Tag segments without a TrackUID)
-		/// If a global track doesn't exist it will create one
-		/// \return A MatroskaTrackInfo pointer to the 'Global' track
-		//MatroskaTrackInfo *GetGlobalTrackInfo();
-		/// Get the filename of the current Matroska file
-		/// \return A char pointer to the open Matroska file's name including =
path
-		/// \warning Do not free the memory used by the returned wchar_t *
-		virtual const wchar_t *GetFilename();
-		virtual const char *GetFilename_ASCII();
-		/// Get the filesize in a nice format
-		/// For example The file is 100,756,003 bytes, This function will retu=
rn "100.75MB"
-		/// \return A char pointer to the a nicely formated size, Do not delet=
e	=09
-		virtual const char *GetNiceFileSize();
-
-		/// Get the Muxing App of the file
-		/// \return A char pointer to the Muxing App tag
-		virtual const char *GetMuxingApp();
-		/// Get the Writing App of the file
-		/// \return A char pointer to the Writing App tag
-		virtual const char *GetWritingApp();
-		/// Returns the title for the file found in the Infos element
-		virtual UTFstring &GetTitle();
-	=09
-		virtual UTFstring GetTagArtist(MatroskaTagInfo *tagTrack =3D NULL);
-		virtual UTFstring GetTagTitle(MatroskaTagInfo *tagTrack =3D NULL);
-		virtual UTFstring GetTagAlbum(MatroskaTagInfo *tagTrack =3D NULL);
-		virtual uint32 GetTagDiscTrack(MatroskaTagInfo *tagTrack =3D NULL);	=09
-		virtual uint32 GetTagYear(MatroskaTagInfo *tagTrack =3D NULL);
-		virtual std::string GetTagGenre(MatroskaTagInfo *tagTrack =3D NULL);
-		virtual UTFstring GetTagComment(MatroskaTagInfo *tagTrack =3D NULL);
-		virtual int32 GetTagRating(MatroskaTagInfo *tagTrack =3D NULL);
-		virtual double GetTagBPM(MatroskaTagInfo *tagTrack =3D NULL);
-
-		virtual int SetTagArtist(UTFstring artist, MatroskaTagInfo *tagTrack =3D=
 NULL);
-		virtual int SetTagTitle(UTFstring title, MatroskaTagInfo *tagTrack =3D=
 NULL);
-		virtual int SetTagAlbum(UTFstring album, MatroskaTagInfo *tagTrack =3D=
 NULL);
-		virtual int SetTagDiscTrack(uint32 discTrack, MatroskaTagInfo *tagTrac=
k =3D NULL);	=09
-		virtual int SetTagYear(uint32 year, MatroskaTagInfo *tagTrack =3D NULL=
);
-		virtual int SetTagGenre(std::string genre, MatroskaTagInfo *tagTrack =3D=
 NULL);
-		virtual int SetTagComment(UTFstring comment, MatroskaTagInfo *tagTrack=
 =3D NULL);
-		virtual int SetTagRating(int32 rating, MatroskaTagInfo *tagTrack =3D N=
ULL);
-		virtual int SetTagBPM(double bpm, MatroskaTagInfo *tagTrack =3D NULL);
-
-		/// Create a text report of the file, inlcuding the track list
-		/// \return A reference to the std::string report
-		virtual std::string &GetTextReport();
-
-		virtual uint32 GetMetaSeekSize() { return m_MetaSeekSize; };
-		virtual uint32 GetCuesSize() { return m_CuesSize; };
-		/// Convert a ASCII string to Unicode
-		/// \param ansi_filename Input ASCII string
-		/// \return Unicode string
-		/// \warning You have to call delete on the returned string when done =
with it
-		static wchar_t *ConvertCharToWchar_t(const char *ansi_filename);
-		/// Multi-threaded safe
-		virtual uint8 GetPercentComplete();
-
-    virtual MatroskaSegmentInfo *GetSegmentInfo();
-#ifdef USING_TINYXML
-    /// Save the tags in a XML file, readable by mkvmerge
-    virtual int SaveTagsToXMLFile(JString &xmlFilename);
-    virtual int SaveChaptersToXMLFile(JString &xmlFilename);
-#endif
-
-		MatroskaTrackInfoList trackInfos;
-		MatroskaAttachmentsList fileAttachments;
-		MatroskaTagList tags;
-		MatroskaChapterList chapters;
-		MatroskaSegmentInfo m_segmentInfo;
-
-		uint64 file_size;
-
-		uint64 currentFilePos;	=09
-		bool keepProcessing;
-
-		//Used when parsing the a Matroska file
-		bool really_found_tags;
-		bool found_tags;
-		bool found_tracks;
-		bool found_info;
-		bool found_attachments;
-
-		bool m_parseSeekHead;
-		bool m_parseAttachments;
-		bool m_parseTags;
-		bool m_parseWholeFile;
-
-		uint64 m_tagElementPos;
-		uint64 m_tagElementSize;
-
-		uint32 cluster_count;
-		MatroskaTrackInfo *lastSelectedTrack;
-protected:			=09
-		/// An function used by ParseFile() to gather data from a Infomation e=
lement
-		/// \param inputfile_stream Pointer to a EbmlStream of the opened Matr=
oska file
-		/// \param infomation_element Pointer to a EbmlElement of the Info Ele=
ment	=09
-		/// \retval 0 if successful
-		int Parse_InfomationSegment(EbmlStream *inputfile_stream, EbmlElement =
*infomation_element);
-		/// An function used by ParseFile() to gather data from the Tracks ele=
ment
-		/// \param inputfile_stream Pointer to a EbmlStream of the opened Matr=
oska file
-		/// \param tracks_element Pointer to a EbmlElement of the Tracks Eleme=
nt
-		/// \retval 0 if successful
-		int Parse_Tracks(EbmlStream *inputfile_stream, EbmlElement *tracks_ele=
ment);
-		/// An function used by ParseFile() to gather data from the Tags eleme=
nt
-		/// \param inputfile_stream Pointer to a EbmlStream of the opened Matr=
oska file
-		/// \param tags_element Pointer to a EbmlElement of the Tags Element
-		/// \return The number of Tag(s) element found and parsed
-		int Parse_Tags(EbmlStream *inputfile_stream, EbmlElement *tags_element=
);
-		/// An function used by ParseFile() to gather data from the Attachment=
s element
-		/// \param inputfile_stream Pointer to a EbmlStream of the opened Matr=
oska file
-		/// \param attachments_element Pointer to a EbmlElement of the Attachm=
ent Element
-		/// \return The number of Attachments found and parsed
-		int Parse_Attachments(EbmlStream *inputfile_stream, EbmlElement *attac=
hments_element);
-		int Parse_Chapters(EbmlStream *inputfile_stream, EbmlElement *chapter_=
element);
-		int Parse_ChapterAtom(KaxChapterAtom &ChapterAtom, MatroskaChapterEntr=
y **entry);
-		=20
-		 /// Updates the currentPercent locking the critcal section to be mult=
i-threaded safe
-		inline void UpdatePercentComplete(uint8 newPercent);
-
-		bool m_IsValid;
-
-		std::string m_fileReport;	=09
-		UTFstring m_niceFileSize;
-
-		UTFstring m_filename;			=09
-	=09
-		//I've never used this
-		//UTFstring m_fileTitle;
-
-		//uint64 m_TimecodeScale;
-		uint32 m_MetaSeekSize;
-		uint32 m_TrackSize;
-		uint32 m_CuesSize;
-
-		//Multi-Threaded stuff
-		JCCritSec m_CurrentPercent_cs;
-		uint8 m_CurrentPercent;
-};
-
-#ifdef _DEBUG		=09
-//Memory Debugging
-int YourAllocHook(int allocType, void *userData, size_t size, int blockT=
ype, long requestNumber, const unsigned char *filename, int lineNumber);
-#endif
-
-};
-
-#endif // _MATROSKA_UTILS_H_
-
-
+/**
+	*  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
+	*
+	*  MatroskaUtils.h
+	*
+	*  Copyright (C) Jory Stone - June 2003
+	*  Copyright (C) John Cannon - 2003
+	*
+	*
+	*  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+	*  it under the terms of the GNU General Public License as published by
+	*  the Free Software Foundation; either version 2, or (at your option)
+	*  any later version.
+	*
+	*  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	*  GNU General Public License for more details.
+	*
+	*  You should have received a copy of the GNU General Public License
+	*  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+	*
+*/
+
+/*!
+    \file MatroskaUtils.h
+		\version \$Id: MatroskaUtils.h,v 1.38 2004/03/20 05:08:31 jcsston Exp =
$
+    \brief Some general code to make working with Matroska easier
+		\author Jory Stone     <jcsston @ toughguy.net>
+		\author John Cannon    <spyder482 @ yahoo.com>
+	=09
+		Inspired by ;) John Cannon ([email protected]) (c) 2003
+*/
+
+#ifndef _MATROSKA_UTILS_H_
+#define _MATROSKA_UTILS_H_
+
+#include "MatroskaUtilsDebug.h"
+#include "MatroskaUtilsReader.h"
+#include "JCThread.h"
+#ifdef USING_BITRATE_INFO
+#include "MatroskaUtilsBitrate.h"
+#endif
+
+
+//standard includes
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include <vector>
+#include <time.h>
+#include <malloc.h>
+#include <process.h>
+
+#ifdef USING_TINYXML
+#include "tinyxml.h"
+#endif
+
+// libebml includes
+#include "ebml/StdIOCallback.h"
+#include "ebml/EbmlTypes.h"
+#include "ebml/EbmlHead.h"
+#include "ebml/EbmlVoid.h"
+#include "ebml/EbmlCrc32.h"
+#include "ebml/EbmlSubHead.h"
+#include "ebml/EbmlStream.h"
+#include "ebml/EbmlBinary.h"
+#include "ebml/EbmlString.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlContexts.h"
+#include "ebml/EbmlVersion.h"
+
+// libmatroska includes
+#include "matroska/KaxConfig.h"
+#include "matroska/KaxBlock.h"
+#include "matroska/KaxSegment.h"
+#include "matroska/KaxContexts.h"
+#include "matroska/KaxSeekHead.h"
+#include "matroska/KaxTracks.h"
+#include "matroska/KaxInfo.h"
+#include "matroska/KaxInfoData.h"
+#include "matroska/KaxTags.h"
+#include "matroska/KaxTag.h"
+#include "matroska/KaxTagMulti.h"
+#include "matroska/KaxCluster.h"
+#include "matroska/KaxClusterData.h"
+#include "matroska/KaxTrackAudio.h"
+#include "matroska/KaxTrackVideo.h"
+#include "matroska/KaxAttachments.h"
+#include "matroska/KaxAttached.h"
+#include "matroska/KaxChapters.h"
+#include "matroska/KaxVersion.h"
+
+#include "MatroskaTrackData.h"
+#include "MatroskaChapterData.h"
+#include "JList.h"
+
+namespace MatroskaUtilsNamespace {
+
+using namespace LIBEBML_NAMESPACE;
+using namespace LIBMATROSKA_NAMESPACE;
+
+/// The working horse of the CDL, Shell Ext.
+/// /par Memory Usage test 08-27-2003
+/// For file "mew_mew_attachment.mkv" 19 tracks
+/// 20 parsers, 175,886 bytes
+/// For file "Copy (2) of Copy of tag_test_mkvmerge.mkv" video + lots of=
 tags
+/// 20 parsers, 102,244 bytese
+/// For file "Voyager - Good Shepherd.mkv" Xvid video+Vorbis
+/// 20 parsers, 81,082 bytes
+/// For file "pink2.mka" MP3 + Some tags
+/// 10 Parsers, 47,025 bytes
+/// 20 parsers, 89,503 bytes
+class MatroskaInfoParser {
+	public:
+		/// Initializes the class
+		/// \param MatroskaFilename The filename of a Matroska file to parse
+		MatroskaInfoParser(const wchar_t *MatroskaFilename);
+		MatroskaInfoParser(const char *MatroskaFilename);	=09
+		/// Reset values to defaults (not the filename)
+		virtual int Initialize();
+		/// Call this to check if the file is valid
+		bool IsValid() { TRACE("MatroskaInfoParser::IsValid()"); return m_IsVa=
lid;}
+		/// Destroys the class
+		virtual ~MatroskaInfoParser();
+    /// Detects if a file is a Matroska file or not
+    /// \param file_to_check The filename of the Matroska file to detect
+    /// \return True if the file is a Matroska file, false otherwise
+   // static bool CheckForMatroska(char* file_to_check);
+		virtual bool IsMatroska(JString file_to_check);
+		//bool IsMatroska(const wchar_t* file_to_check);
+		/// Controls if we try to read the tags or not.
+		/// If we do read the tags and the file doesn't have a SeekEntry for t=
he Tags element
+		/// or doesn't even have a Tags element it will take a long time depen=
ding on the file size
+		/// \param passed_readTags If set to true we will parse the tags
+		//void SetReadTags(bool passed_readTags =3D true);
+		/// Controls if we parse the whole file
+		/// This will need to be set to true in order to scan for Attachments
+		/// \param passed_parse_whole_file If set to true we will parse the wh=
ole file
+		//void SetParseWholeFile(bool passed_parse_whole_file =3D true);	=09
+		/// Parses the file's contents to retrieve the data needed
+		/// \retval 0 if successful
+		/// \retval 1 if the file isn't a valid Matroska file
+		/// \retval 5 if the file is a EBML file but the DocType isn't Matrosk=
a
+		virtual int ParseFile();
+		/// NON-WORKING
+		/// \param output_filename The file to copy the current matroska file =
to
+		virtual int CopyFile(char *output_filename);
+		/// Write out the tags from memory to the opened Matroska file
+		virtual int WriteTags();
+		/// Updates the Display Size or AR  in the currently opened Matroska f=
ile
+		/// \param track_no The track number of the video track to update
+		/// \param new_display_size_width The display width to write
+		/// \param new_display_size_height The display height to write
+		/// \retval 0 if the new Display Size was written successfully
+		/// \retval 1 if the file wasn't a Matroska file or couldn't be opened
+		/// \retval 2 if the file couldn't be opened for writing
+		/// \retval 3 if the file didn't have DisplaySize elements
+		virtual int WriteDisplaySize(uint8 track_no, uint16 new_display_size_w=
idth, uint16 new_display_size_height);
+		/// Updates the Language of a track in the currently opened Matroska f=
ile
+		/// \param track_no The track number of the video track to update
+		/// \param new_lang The Language Code to write
+		/// \retval 0 if the new Display Size was written successfully
+		/// \retval 1 if the file wasn't a Matroska file or couldn't be opened
+		/// \retval 2 if the file couldn't be opened for writing
+		/// \retval 3 if the file didn't have the Language of a track already =
written
+		/// \retval 4 if the Language of a track already written was too small=
 to put the new value
+		virtual int WriteLanguage(uint8 track_no, std::string new_lang);
+
+		/// Get number of tracks found in the file
+		/// \return The number of tracks found in the currently opened Matrosk=
a file
+		virtual int GetNumberOfTracks();
+		/// Lookup a track by it's UID and returns a pointer to the track's in=
formation
+		/// \param trackUID The UID of the track you wish to find
+		/// \return A MatroskaTrackInfo pointer to the found track or NULL if =
the track couldn't be found	=09
+		virtual MatroskaTrackInfo *GetTrackInfoByUID(uint64 trackUID);
+		/// Lookup a track by it's number and returns a pointer to the track's=
 information
+		/// This isn't the best way to find a specfic track, use GetTrackInfoB=
yUID() instead
+		/// but this is a good way to go through each track, say if you were l=
isting all the track found
+		/// \param trackNumber The number of the track you wish to find, the v=
alid range is the return value of GetNumberOfTracks() to 1
+		/// \return A pointer to a MatroskaTrackInfo of the found track or NUL=
L if the track couldn't be found	=09
+		virtual MatroskaTrackInfo *GetTrackInfo(int trackNumber);
+		/// Get the first Video track
+		virtual MatroskaTrackInfo *GetFirstVideoTrack();
+		/// Get the first Audio track
+		virtual MatroskaTrackInfo *GetFirstAudioTrack();
+		virtual MatroskaTrackInfo *GetFirstSubtitleTrack();
+		/// Return a pointer to the global track info, (includes the Info segm=
ent and Tag segments without a TrackUID)
+		/// If a global track doesn't exist it will create one
+		/// \return A MatroskaTrackInfo pointer to the 'Global' track
+		//MatroskaTrackInfo *GetGlobalTrackInfo();
+		/// Get the filename of the current Matroska file
+		/// \return A char pointer to the open Matroska file's name including =
path
+		/// \warning Do not free the memory used by the returned wchar_t *
+		virtual const wchar_t *GetFilename();
+		virtual const char *GetFilename_ASCII();
+		/// Get the filesize in a nice format
+		/// For example The file is 100,756,003 bytes, This function will retu=
rn "100.75MB"
+		/// \return A char pointer to the a nicely formated size, Do not delet=
e	=09
+		virtual const char *GetNiceFileSize();
+
+		/// Get the Muxing App of the file
+		/// \return A char pointer to the Muxing App tag
+		virtual const char *GetMuxingApp();
+		/// Get the Writing App of the file
+		/// \return A char pointer to the Writing App tag
+		virtual const char *GetWritingApp();
+		/// Returns the title for the file found in the Infos element
+		virtual UTFstring &GetTitle();
+	=09
+		virtual UTFstring GetTagArtist(MatroskaTagInfo *tagTrack =3D NULL);
+		virtual UTFstring GetTagTitle(MatroskaTagInfo *tagTrack =3D NULL);
+		virtual UTFstring GetTagAlbum(MatroskaTagInfo *tagTrack =3D NULL);
+		virtual uint32 GetTagDiscTrack(MatroskaTagInfo *tagTrack =3D NULL);	=09
+		virtual uint32 GetTagYear(MatroskaTagInfo *tagTrack =3D NULL);
+		virtual std::string GetTagGenre(MatroskaTagInfo *tagTrack =3D NULL);
+		virtual UTFstring GetTagComment(MatroskaTagInfo *tagTrack =3D NULL);
+		virtual int32 GetTagRating(MatroskaTagInfo *tagTrack =3D NULL);
+		virtual double GetTagBPM(MatroskaTagInfo *tagTrack =3D NULL);
+
+		virtual int SetTagArtist(UTFstring artist, MatroskaTagInfo *tagTrack =3D=
 NULL);
+		virtual int SetTagTitle(UTFstring title, MatroskaTagInfo *tagTrack =3D=
 NULL);
+		virtual int SetTagAlbum(UTFstring album, MatroskaTagInfo *tagTrack =3D=
 NULL);
+		virtual int SetTagDiscTrack(uint32 discTrack, MatroskaTagInfo *tagTrac=
k =3D NULL);	=09
+		virtual int SetTagYear(uint32 year, MatroskaTagInfo *tagTrack =3D NULL=
);
+		virtual int SetTagGenre(std::string genre, MatroskaTagInfo *tagTrack =3D=
 NULL);
+		virtual int SetTagComment(UTFstring comment, MatroskaTagInfo *tagTrack=
 =3D NULL);
+		virtual int SetTagRating(int32 rating, MatroskaTagInfo *tagTrack =3D N=
ULL);
+		virtual int SetTagBPM(double bpm, MatroskaTagInfo *tagTrack =3D NULL);
+
+		/// Create a text report of the file, inlcuding the track list
+		/// \return A reference to the std::string report
+		virtual std::string &GetTextReport();
+
+		virtual uint32 GetMetaSeekSize() { return m_MetaSeekSize; };
+		virtual uint32 GetCuesSize() { return m_CuesSize; };
+		/// Convert a ASCII string to Unicode
+		/// \param ansi_filename Input ASCII string
+		/// \return Unicode string
+		/// \warning You have to call delete on the returned string when done =
with it
+		static wchar_t *ConvertCharToWchar_t(const char *ansi_filename);
+		/// Multi-threaded safe
+		virtual uint8 GetPercentComplete();
+
+    virtual MatroskaSegmentInfo *GetSegmentInfo();
+#ifdef USING_TINYXML
+    /// Save the tags in a XML file, readable by mkvmerge
+    virtual int SaveTagsToXMLFile(JString &xmlFilename);
+    virtual int SaveChaptersToXMLFile(JString &xmlFilename);
+#endif
+
+		MatroskaTrackInfoList trackInfos;
+		MatroskaAttachmentsList fileAttachments;
+		MatroskaTagList tags;
+		MatroskaChapterList chapters;
+		MatroskaSegmentInfo m_segmentInfo;
+
+		uint64 file_size;
+
+		uint64 currentFilePos;	=09
+		bool keepProcessing;
+
+		//Used when parsing the a Matroska file
+		bool really_found_tags;
+		bool found_tags;
+		bool found_tracks;
+		bool found_info;
+		bool found_attachments;
+
+		bool m_parseSeekHead;
+		bool m_parseAttachments;
+		bool m_parseTags;
+		bool m_parseWholeFile;
+
+		uint64 m_tagElementPos;
+		uint64 m_tagElementSize;
+
+		uint32 cluster_count;
+		MatroskaTrackInfo *lastSelectedTrack;
+protected:			=09
+		/// An function used by ParseFile() to gather data from a Infomation e=
lement
+		/// \param inputfile_stream Pointer to a EbmlStream of the opened Matr=
oska file
+		/// \param infomation_element Pointer to a EbmlElement of the Info Ele=
ment	=09
+		/// \retval 0 if successful
+		int Parse_InfomationSegment(EbmlStream *inputfile_stream, EbmlElement =
*infomation_element);
+		/// An function used by ParseFile() to gather data from the Tracks ele=
ment
+		/// \param inputfile_stream Pointer to a EbmlStream of the opened Matr=
oska file
+		/// \param tracks_element Pointer to a EbmlElement of the Tracks Eleme=
nt
+		/// \retval 0 if successful
+		int Parse_Tracks(EbmlStream *inputfile_stream, EbmlElement *tracks_ele=
ment);
+		/// An function used by ParseFile() to gather data from the Tags eleme=
nt
+		/// \param inputfile_stream Pointer to a EbmlStream of the opened Matr=
oska file
+		/// \param tags_element Pointer to a EbmlElement of the Tags Element
+		/// \return The number of Tag(s) element found and parsed
+		int Parse_Tags(EbmlStream *inputfile_stream, EbmlElement *tags_element=
);
+		/// An function used by ParseFile() to gather data from the Attachment=
s element
+		/// \param inputfile_stream Pointer to a EbmlStream of the opened Matr=
oska file
+		/// \param attachments_element Pointer to a EbmlElement of the Attachm=
ent Element
+		/// \return The number of Attachments found and parsed
+		int Parse_Attachments(EbmlStream *inputfile_stream, EbmlElement *attac=
hments_element);
+		int Parse_Chapters(EbmlStream *inputfile_stream, EbmlElement *chapter_=
element);
+		int Parse_ChapterAtom(KaxChapterAtom &ChapterAtom, MatroskaChapterEntr=
y **entry);
+		=20
+		 /// Updates the currentPercent locking the critcal section to be mult=
i-threaded safe
+		inline void UpdatePercentComplete(uint8 newPercent);
+
+		bool m_IsValid;
+
+		std::string m_fileReport;	=09
+		UTFstring m_niceFileSize;
+
+		UTFstring m_filename;			=09
+	=09
+		//I've never used this
+		//UTFstring m_fileTitle;
+
+		//uint64 m_TimecodeScale;
+		uint32 m_MetaSeekSize;
+		uint32 m_TrackSize;
+		uint32 m_CuesSize;
+
+		//Multi-Threaded stuff
+		JCCritSec m_CurrentPercent_cs;
+		uint8 m_CurrentPercent;
+};
+
+#ifdef _DEBUG		=09
+//Memory Debugging
+int YourAllocHook(int allocType, void *userData, size_t size, int blockT=
ype, long requestNumber, const unsigned char *filename, int lineNumber);
+#endif
+
+};
+
+#endif // _MATROSKA_UTILS_H_
+
+


Property changes on: trunk/MatroskaUtils/MatroskaUtils.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaUtilsBitrate.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaUtilsBitrate.h	2007-02-17 10:34:40 UTC (r=
ev 1276)
+++ trunk/MatroskaUtils/MatroskaUtilsBitrate.h	2007-02-17 10:55:54 UTC (r=
ev 1277)
@@ -1,149 +1,149 @@
-/**
-	*  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
-	*
-	*  MatroskaUtilsBitrate.h
-	*
-	*  Copyright (C) Jory Stone - June 2003
-	*
-	*
-	*  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
-	*  it under the terms of the GNU General Public License as published by
-	*  the Free Software Foundation; either version 2, or (at your option)
-	*  any later version.
-	*
-	*  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
-	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	*  GNU General Public License for more details.
-	*
-	*  You should have received a copy of the GNU General Public License
-	*  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
-	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
-	*
-*/
-
-/*!
-    \file MatroskaUtilsBitrate.h
-		\version \$Id: MatroskaUtilsBitrate.h,v 1.3 2004/03/08 07:56:51 jcssto=
n Exp $
-    \brief Some code to get bitrate infomation about a Matroska file
-		\author Jory Stone     <jcsston @ toughguy.net>	=09
-	=09
-*/
-
-#ifndef _MATROSKA_UTILS_BITRATE_H_
-#define _MATROSKA_UTILS_BITRATE_H_
-
-#include "MatroskaUtilsDebug.h"
-#include "MatroskaUtilsReader.h"
-#include "JString.h"
-#include "JCThread.h"
-#include "MatroskaUtils.h"
-
-//standard includes
-// We use Win32 API to directly draw our graph
-#include <windows.h>
-#include <tchar.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <vector>
-#include <time.h>
-#include <malloc.h>
-
-// libebml includes
-#include "ebml/StdIOCallback.h"
-#include "ebml/EbmlTypes.h"
-#include "ebml/EbmlHead.h"
-#include "ebml/EbmlVoid.h"
-#include "ebml/EbmlCrc32.h"
-#include "ebml/EbmlSubHead.h"
-#include "ebml/EbmlStream.h"
-#include "ebml/EbmlBinary.h"
-#include "ebml/EbmlString.h"
-#include "ebml/EbmlUnicodeString.h"
-#include "ebml/EbmlContexts.h"
-#include "ebml/EbmlVersion.h"
-
-// libmatroska includes
-#include "matroska/KaxConfig.h"
-#include "matroska/KaxBlock.h"
-#include "matroska/KaxSegment.h"
-#include "matroska/KaxContexts.h"
-#include "matroska/KaxCluster.h"
-#include "matroska/KaxClusterData.h"
-#include "matroska/KaxBlock.h"
-#include "matroska/KaxBlockData.h"
-#include "matroska/KaxVersion.h"
-
-#define TIMECODE_SCALE  1000000
-
-namespace MatroskaUtilsNamespace {
-
-class MatroskaBitrateInfoTrack {
-public:
-	MatroskaBitrateInfoTrack();
-	void ProcessBitrateVector();
-
-	uint64 uid;
-	float minBitrate;
-	float avgBitrate;
-	float maxBitrate;
-	std::vector<float> bitrates;
-	float bitrateLength;
-	double duration;
-};
-
-class MatroskaBitrateInfo;
-
-class MatroskaBitrateInfoReader : public JCThread {
-public:
-	MatroskaBitrateInfoReader(MatroskaBitrateInfo *info);
-	~MatroskaBitrateInfoReader();
-
-	void *Entry();
-
-protected:
-	MatroskaBitrateInfo *m_Info;
-	//MatroskaUilsFileReader *m_Reader;
-	uint64 m_TimecodeScale;
-	std::basic_string<TCHAR> &m_TextOutput;
-};
-
-#ifndef MatroskaInfoParser
-class MatroskaInfoParser;
-#endif
-
-class MatroskaBitrateInfo {
-public:
-	MatroskaBitrateInfo();
-	~MatroskaBitrateInfo();
-
-	int Open(MatroskaInfoParser *parser);
-	int Save();
-
-	int Draw(HWND hWnd, DWORD x1, DWORD y1, DWORD x2, DWORD y2);
-	void SetReportTextCtrl(HWND txtCtrl);
-	const std::basic_string<TCHAR> &GetReport() { return m_TextOutput; };
-	uint64 GetFilePos();
-	uint8 GetCurrentPercent();
-	void Stop();
-protected:
-	HWND m_TargetTextCtrl;
-	JString m_SourceFilename;
-	std::vector<MatroskaBitrateInfoTrack> m_TrackList;
-=09
-	JCCritSec m_FilePosCritSec;
-	uint64 m_FilePos;
-	uint64 m_FileSize;
-	int hr;
-	MatroskaInfoParser *m_Parser;
-	MatroskaBitrateInfoReader *m_Reader;
-	std::basic_string<TCHAR> m_TextOutput;
-
-	friend MatroskaBitrateInfoReader;
-};
-
-};
-
-#endif // _MATROSKA_UTILS_BITRATE
+/**
+	*  Part of The TCMP Matroska CDL, a plugin to access extra features of =
Matroska files with TCMP
+	*
+	*  MatroskaUtilsBitrate.h
+	*
+	*  Copyright (C) Jory Stone - June 2003
+	*
+	*
+	*  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+	*  it under the terms of the GNU General Public License as published by
+	*  the Free Software Foundation; either version 2, or (at your option)
+	*  any later version.
+	*
+	*  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+	*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+	*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	*  GNU General Public License for more details.
+	*
+	*  You should have received a copy of the GNU General Public License
+	*  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+	*  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+	*
+*/
+
+/*!
+    \file MatroskaUtilsBitrate.h
+		\version \$Id: MatroskaUtilsBitrate.h,v 1.3 2004/03/08 07:56:51 jcssto=
n Exp $
+    \brief Some code to get bitrate infomation about a Matroska file
+		\author Jory Stone     <jcsston @ toughguy.net>	=09
+	=09
+*/
+
+#ifndef _MATROSKA_UTILS_BITRATE_H_
+#define _MATROSKA_UTILS_BITRATE_H_
+
+#include "MatroskaUtilsDebug.h"
+#include "MatroskaUtilsReader.h"
+#include "JString.h"
+#include "JCThread.h"
+#include "MatroskaUtils.h"
+
+//standard includes
+// We use Win32 API to directly draw our graph
+#include <windows.h>
+#include <tchar.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include <vector>
+#include <time.h>
+#include <malloc.h>
+
+// libebml includes
+#include "ebml/StdIOCallback.h"
+#include "ebml/EbmlTypes.h"
+#include "ebml/EbmlHead.h"
+#include "ebml/EbmlVoid.h"
+#include "ebml/EbmlCrc32.h"
+#include "ebml/EbmlSubHead.h"
+#include "ebml/EbmlStream.h"
+#include "ebml/EbmlBinary.h"
+#include "ebml/EbmlString.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlContexts.h"
+#include "ebml/EbmlVersion.h"
+
+// libmatroska includes
+#include "matroska/KaxConfig.h"
+#include "matroska/KaxBlock.h"
+#include "matroska/KaxSegment.h"
+#include "matroska/KaxContexts.h"
+#include "matroska/KaxCluster.h"
+#include "matroska/KaxClusterData.h"
+#include "matroska/KaxBlock.h"
+#include "matroska/KaxBlockData.h"
+#include "matroska/KaxVersion.h"
+
+#define TIMECODE_SCALE  1000000
+
+namespace MatroskaUtilsNamespace {
+
+class MatroskaBitrateInfoTrack {
+public:
+	MatroskaBitrateInfoTrack();
+	void ProcessBitrateVector();
+
+	uint64 uid;
+	float minBitrate;
+	float avgBitrate;
+	float maxBitrate;
+	std::vector<float> bitrates;
+	float bitrateLength;
+	double duration;
+};
+
+class MatroskaBitrateInfo;
+
+class MatroskaBitrateInfoReader : public JCThread {
+public:
+	MatroskaBitrateInfoReader(MatroskaBitrateInfo *info);
+	~MatroskaBitrateInfoReader();
+
+	void *Entry();
+
+protected:
+	MatroskaBitrateInfo *m_Info;
+	//MatroskaUilsFileReader *m_Reader;
+	uint64 m_TimecodeScale;
+	std::basic_string<TCHAR> &m_TextOutput;
+};
+
+#ifndef MatroskaInfoParser
+class MatroskaInfoParser;
+#endif
+
+class MatroskaBitrateInfo {
+public:
+	MatroskaBitrateInfo();
+	~MatroskaBitrateInfo();
+
+	int Open(MatroskaInfoParser *parser);
+	int Save();
+
+	int Draw(HWND hWnd, DWORD x1, DWORD y1, DWORD x2, DWORD y2);
+	void SetReportTextCtrl(HWND txtCtrl);
+	const std::basic_string<TCHAR> &GetReport() { return m_TextOutput; };
+	uint64 GetFilePos();
+	uint8 GetCurrentPercent();
+	void Stop();
+protected:
+	HWND m_TargetTextCtrl;
+	JString m_SourceFilename;
+	std::vector<MatroskaBitrateInfoTrack> m_TrackList;
+=09
+	JCCritSec m_FilePosCritSec;
+	uint64 m_FilePos;
+	uint64 m_FileSize;
+	int hr;
+	MatroskaInfoParser *m_Parser;
+	MatroskaBitrateInfoReader *m_Reader;
+	std::basic_string<TCHAR> m_TextOutput;
+
+	friend MatroskaBitrateInfoReader;
+};
+
+};
+
+#endif // _MATROSKA_UTILS_BITRATE


Property changes on: trunk/MatroskaUtils/MatroskaUtilsBitrate.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaUtilsDebug.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaUtilsDebug.h	2007-02-17 10:34:40 UTC (rev=
 1276)
+++ trunk/MatroskaUtils/MatroskaUtilsDebug.h	2007-02-17 10:55:54 UTC (rev=
 1277)
@@ -1,203 +1,203 @@
-/*
- *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
- *
- *  MatroskaUtilsDebug.h
- *
- *  Copyright (C) Jory Stone - June 2003
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
-*/
-
-/*!
-    \file MatroskaUtilsDebug.h
-		\version \$Id: MatroskaUtilsDebug.h,v 1.23 2004/02/20 06:12:32 jcsston=
 Exp $
-    \brief This is where the debugging defines go
-		\author Jory Stone     <jcsston @ toughguy.net>
-
-*/
-
-#ifndef _MATROSKA_UTILS_DEBUG_H_
-#define _MATROSKA_UTILS_DEBUG_H_
-
-#ifdef DEBUG_MEM
-#ifdef _DEBUG
-   #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)
-#else
-   #define DEBUG_CLIENTBLOCK
-#endif // _DEBUG
-
-#ifdef _DEBUG
-#define new DEBUG_CLIENTBLOCK
-#endif
-#endif
-
-#ifdef USING_GETTTEXT
-#define USE_SAFE_GETTEXT_DLL
-#include <libintl.h>
-#include "safe_gettext_dll.h"
-// Simple macro for faster typing
-#define _(String) gettext(String)
-#ifdef _UNICODE
-#define _W(String) gettextW(String)
-#else
-#define _W(String) gettext(String)
-#endif
-#else
-#define _(String) String
-#ifdef _UNICODE
-#define _W2(x) L ## x
-#define _W(x) _W2(x)
-#else
-#define _W(String) (String)
-#endif
-#endif
-
-#include <windows.h>
-#include <tchar.h>
-#include <sstream>
-#include <exception>
-#include "JString.h"
-
-#define MAX_MATROSKA_PATH MAX_PATH*2
-
-#ifdef DEBUG
-// The crash handling code can get in the way of debuggers
-#define CRASH_PROTECT_START
-#define CRASH_PROTECT_END
-#endif
-
-#ifdef MATROSKA_INFO
-// The info dll is stripped down for size
-#define CRASH_PROTECT_START
-#define CRASH_PROTECT_END
-#endif
-
-#define CRASH_PROTECT_BREAKPOINT
-
-#ifndef CRASH_PROTECT_BREAKPOINT
-#define CRASH_PROTECT_BREAKPOINT \
-	{ \
-		std::ostringstream buf; \
-		buf << ("Breakpoint,\nFile: " __FILE__ "\nFunction: " __FUNCTION__ "\n=
Line:"); \
-		buf << __LINE__; \
-		MessageBoxA(NULL, buf.str().c_str(), "Breakpoint", MB_TASKMODAL); \
-	}
-#endif
-
-#ifndef CRASH_PROTECT_START
-#define CRASH_PROTECT_START try {
-#endif
-#ifndef CRASH_PROTECT_END
-#define CRASH_PROTECT_END \
-	} catch (std::exception &ex) { \
-		std::ostringstream buf; \
-		buf << "Exception: "; \
-		buf << ex.what(); \
-		buf << ("\nFile: " __FILE__ "\nFunction: " __FUNCTION__ "\nLine:"); \
-		buf << __LINE__; \
-		buf << "\nTry to generate bug report?"; \
-		int msgBoxRet =3D MessageBoxA(NULL, buf.str().c_str(), "Error", MB_YES=
NO|MB_TASKMODAL); \
-		if (msgBoxRet =3D=3D IDYES) { \
-				throw; \
-		} \
-	} catch (...) { \
-		std::ostringstream buf; \
-		buf << ("Unhandled Exception,\nFile: " __FILE__ "\nFunction: " __FUNCT=
ION__ "\nLine:"); \
-		buf << __LINE__; \
-		buf << "\nTry to generate bug report?"; \
-		int msgBoxRet =3D MessageBoxA(NULL, buf.str().c_str(), "Error", MB_YES=
NO|MB_TASKMODAL); \
-		if (msgBoxRet =3D=3D IDYES) { \
-				throw; \
-		} \
-	};
-#define CRASH_PROTECT_END_EXTRA(extra_info) \
-	} catch (std::exception &ex) { \
-		std::ostringstream buf; \
-		buf << "Exception: "; \
-		buf << ex.what(); \
-		buf << ("\nFile: " __FILE__ "\nFunction: " __FUNCTION__ "\nLine:"); \
-		buf << __LINE__; \
-		buf << ("\nExtra: "); \
-		buf << extra_info; \
-		buf << "\nTry to generate bug report?"; \
-		int msgBoxRet =3D MessageBoxA(NULL, buf.str().c_str(), "Error", MB_YES=
NO|MB_TASKMODAL); \
-		if (msgBoxRet =3D=3D IDYES) { \
-				throw; \
-		} \
-	} catch (...) { \
-		std::ostringstream buf; \
-		buf << ("Unhandled Exception,\nFile: " __FILE__ "\nFunction: " __FUNCT=
ION__ "\nLine:"); \
-		buf << __LINE__; \
-		buf << ("\nExtra: "); \
-		buf << extra_info; \
-		buf << "\nTry to generate bug report?"; \
-		int msgBoxRet =3D MessageBoxA(NULL, buf.str().c_str(), "Error", MB_YES=
NO|MB_TASKMODAL); \
-		if (msgBoxRet =3D=3D IDYES) { \
-				throw; \
-		} \
-	};
-#endif
-
-#include "DbgOut.h"
-
-#ifndef wcsicmp
-#define wcsicmp _wcsicmp
-#endif
-
-#ifndef snprintf
-#define snprintf _snprintf
-#endif
-
-#ifndef snwprintf
-#define snwprintf _snwprintf=20
-#endif
-
-#ifdef _atoi64
-#define atoi64(x) _atoi64(x)
-#else
-#ifdef strtoll=20
-#define atoi64(x) strtoll(x)
-#else
-#ifdef atoll
-#define atoi64(x) strtoll(x)
-#else
-#define atoi64(x) atol(x)
-#endif
-#endif
-#endif
-
-#ifndef stricmp
-#ifdef _stricmp
-#define stricmp _stricmp
-#else
-#ifdef strcmpi
-// Zen reported a strange problem with the Borland C++ Builder compiler
-// having the strcmpi and yet not having a strcmpi function
-#if !defined (__BORLANDC__)
-#define stricmp strcmpi
-#endif //__BORLANDC__
-#else
-#ifdef strcasecmp
-#define stricmp strcasecmp
-#else
-#define stricmp strcmp
-#endif
-#endif
-#endif
-#endif
-
-#endif // _MATROSKA_UTILS_DEBUG_H_
-
+/*
+ *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
+ *
+ *  MatroskaUtilsDebug.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+*/
+
+/*!
+    \file MatroskaUtilsDebug.h
+		\version \$Id: MatroskaUtilsDebug.h,v 1.23 2004/02/20 06:12:32 jcsston=
 Exp $
+    \brief This is where the debugging defines go
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+#ifndef _MATROSKA_UTILS_DEBUG_H_
+#define _MATROSKA_UTILS_DEBUG_H_
+
+#ifdef DEBUG_MEM
+#ifdef _DEBUG
+   #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)
+#else
+   #define DEBUG_CLIENTBLOCK
+#endif // _DEBUG
+
+#ifdef _DEBUG
+#define new DEBUG_CLIENTBLOCK
+#endif
+#endif
+
+#ifdef USING_GETTTEXT
+#define USE_SAFE_GETTEXT_DLL
+#include <libintl.h>
+#include "safe_gettext_dll.h"
+// Simple macro for faster typing
+#define _(String) gettext(String)
+#ifdef _UNICODE
+#define _W(String) gettextW(String)
+#else
+#define _W(String) gettext(String)
+#endif
+#else
+#define _(String) String
+#ifdef _UNICODE
+#define _W2(x) L ## x
+#define _W(x) _W2(x)
+#else
+#define _W(String) (String)
+#endif
+#endif
+
+#include <windows.h>
+#include <tchar.h>
+#include <sstream>
+#include <exception>
+#include "JString.h"
+
+#define MAX_MATROSKA_PATH MAX_PATH*2
+
+#ifdef DEBUG
+// The crash handling code can get in the way of debuggers
+#define CRASH_PROTECT_START
+#define CRASH_PROTECT_END
+#endif
+
+#ifdef MATROSKA_INFO
+// The info dll is stripped down for size
+#define CRASH_PROTECT_START
+#define CRASH_PROTECT_END
+#endif
+
+#define CRASH_PROTECT_BREAKPOINT
+
+#ifndef CRASH_PROTECT_BREAKPOINT
+#define CRASH_PROTECT_BREAKPOINT \
+	{ \
+		std::ostringstream buf; \
+		buf << ("Breakpoint,\nFile: " __FILE__ "\nFunction: " __FUNCTION__ "\n=
Line:"); \
+		buf << __LINE__; \
+		MessageBoxA(NULL, buf.str().c_str(), "Breakpoint", MB_TASKMODAL); \
+	}
+#endif
+
+#ifndef CRASH_PROTECT_START
+#define CRASH_PROTECT_START try {
+#endif
+#ifndef CRASH_PROTECT_END
+#define CRASH_PROTECT_END \
+	} catch (std::exception &ex) { \
+		std::ostringstream buf; \
+		buf << "Exception: "; \
+		buf << ex.what(); \
+		buf << ("\nFile: " __FILE__ "\nFunction: " __FUNCTION__ "\nLine:"); \
+		buf << __LINE__; \
+		buf << "\nTry to generate bug report?"; \
+		int msgBoxRet =3D MessageBoxA(NULL, buf.str().c_str(), "Error", MB_YES=
NO|MB_TASKMODAL); \
+		if (msgBoxRet =3D=3D IDYES) { \
+				throw; \
+		} \
+	} catch (...) { \
+		std::ostringstream buf; \
+		buf << ("Unhandled Exception,\nFile: " __FILE__ "\nFunction: " __FUNCT=
ION__ "\nLine:"); \
+		buf << __LINE__; \
+		buf << "\nTry to generate bug report?"; \
+		int msgBoxRet =3D MessageBoxA(NULL, buf.str().c_str(), "Error", MB_YES=
NO|MB_TASKMODAL); \
+		if (msgBoxRet =3D=3D IDYES) { \
+				throw; \
+		} \
+	};
+#define CRASH_PROTECT_END_EXTRA(extra_info) \
+	} catch (std::exception &ex) { \
+		std::ostringstream buf; \
+		buf << "Exception: "; \
+		buf << ex.what(); \
+		buf << ("\nFile: " __FILE__ "\nFunction: " __FUNCTION__ "\nLine:"); \
+		buf << __LINE__; \
+		buf << ("\nExtra: "); \
+		buf << extra_info; \
+		buf << "\nTry to generate bug report?"; \
+		int msgBoxRet =3D MessageBoxA(NULL, buf.str().c_str(), "Error", MB_YES=
NO|MB_TASKMODAL); \
+		if (msgBoxRet =3D=3D IDYES) { \
+				throw; \
+		} \
+	} catch (...) { \
+		std::ostringstream buf; \
+		buf << ("Unhandled Exception,\nFile: " __FILE__ "\nFunction: " __FUNCT=
ION__ "\nLine:"); \
+		buf << __LINE__; \
+		buf << ("\nExtra: "); \
+		buf << extra_info; \
+		buf << "\nTry to generate bug report?"; \
+		int msgBoxRet =3D MessageBoxA(NULL, buf.str().c_str(), "Error", MB_YES=
NO|MB_TASKMODAL); \
+		if (msgBoxRet =3D=3D IDYES) { \
+				throw; \
+		} \
+	};
+#endif
+
+#include "DbgOut.h"
+
+#ifndef wcsicmp
+#define wcsicmp _wcsicmp
+#endif
+
+#ifndef snprintf
+#define snprintf _snprintf
+#endif
+
+#ifndef snwprintf
+#define snwprintf _snwprintf=20
+#endif
+
+#ifdef _atoi64
+#define atoi64(x) _atoi64(x)
+#else
+#ifdef strtoll=20
+#define atoi64(x) strtoll(x)
+#else
+#ifdef atoll
+#define atoi64(x) strtoll(x)
+#else
+#define atoi64(x) atol(x)
+#endif
+#endif
+#endif
+
+#ifndef stricmp
+#ifdef _stricmp
+#define stricmp _stricmp
+#else
+#ifdef strcmpi
+// Zen reported a strange problem with the Borland C++ Builder compiler
+// having the strcmpi and yet not having a strcmpi function
+#if !defined (__BORLANDC__)
+#define stricmp strcmpi
+#endif //__BORLANDC__
+#else
+#ifdef strcasecmp
+#define stricmp strcasecmp
+#else
+#define stricmp strcmp
+#endif
+#endif
+#endif
+#endif
+
+#endif // _MATROSKA_UTILS_DEBUG_H_
+


Property changes on: trunk/MatroskaUtils/MatroskaUtilsDebug.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/MatroskaUtilsReader.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/MatroskaUtilsReader.h	2007-02-17 10:34:40 UTC (re=
v 1276)
+++ trunk/MatroskaUtils/MatroskaUtilsReader.h	2007-02-17 10:55:54 UTC (re=
v 1277)
@@ -1,118 +1,118 @@
-/*
- *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
- *
- *  MatroskaUtilsReader.h
- *
- *  Copyright (C) Jory Stone - October 2003
- *
- *  Parts of the XCD parsing code based on code from alexnoe's AVIMux-GU=
I
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file MatroskaUtilsReader.h
-		\version \$Id: MatroskaUtilsReader.h,v 1.6 2004/02/18 06:52:18 jcsston=
 Exp $
-    \brief File IOCallback class Reader, supports XCD
-		\author Jory Stone     <jcsston @ toughguy.net>
-
-*/
-#ifndef _MATROSKAUTILS_READER_H_
-#define _MATROSKAUTILS_READER_H_
-
-#include "JString.h"
-#include "ebml/EbmlCrc32.h"
-#include "ebml/IOCallback.h"
-#include "ebml/StdIOCallback.h"
-#include "ebml/MemIOCallback.h"
-#ifdef WIN32
-#include "WinIOCallback.h"
-#endif // WIN32
-
-using namespace LIBEBML_NAMESPACE;
-
-namespace MatroskaUtilsNamespace {
-
-#define CHECK_XCD_HEADER(x) \
-  (x[0] =3D=3D 0x00 && x[1] =3D=3D 0xFF && x[2] =3D=3D 0xFF && x[3] =3D=3D=
 0xFF && \
-  x[4] =3D=3D 0xFF && x[5] =3D=3D 0xFF && x[6] =3D=3D 0xFF && x[7] =3D=3D=
 0xFF && \
-  x[8] =3D=3D 0xFF && x[9] =3D=3D 0xFF && x[10] =3D=3D 0xFF && x[11] =3D=
=3D 0x00)
-
-#define XCD_SECTOR_SIZE 2352
-#define XCD_SECTOR_DATA_SIZE 2324
-
-#define MakeFourCC(chStr)                              \
-                ((DWORD)(BYTE)(chStr[0]) | ((DWORD)(BYTE)(chStr[1]) << 8=
) |   \
-                ((DWORD)(BYTE)(chStr[2]) << 16) | ((DWORD)(BYTE)(chStr[3=
]) << 24 ))
-
-struct CHUNKHEADER
-{
-	DWORD	dwFourCC;
-	DWORD dwLength;
-};
-
-struct LISTHEADER
-{
-	DWORD	dwListID;
-	DWORD dwLength;
-	DWORD dwFourCC;
-};
-
-struct XCDSECTOR {
-  byte sync[12];
-  byte header[4];
-  byte subheader[8];
-  byte data[2324];
-  byte edc[4];
-};
-
-class MatroskaUilsFileReader : public IOCallback
-{
-public:
-	MatroskaUilsFileReader(const char *Path, const open_mode Mode);
-	MatroskaUilsFileReader(const wchar_t *Path, const open_mode Mode);
-	~MatroskaUilsFileReader();
-
-	virtual uint32 read(void *Buffer, size_t Size);
-	virtual size_t write(const void *Buffer, size_t Size);
-	virtual void setFilePointer(int64 Offset, seek_mode Mode=3Dseek_beginni=
ng);
-	virtual uint64 getFilePointer();
-	virtual void close();
- =20
-  virtual bool IsOk() { return m_fileHandle->IsOk(); };
-  virtual bool IsXCD() { return m_IsXCD; };
- =20
-	WinIOCallback *GetWinIOCallback() { return m_fileHandle; };
-protected:
-  inline void Setup();
-  inline bool ReadNextXCDSector();
- =20
-	WinIOCallback *m_fileHandle;
-	// XCD stuff
-	bool m_IsXCD;
-	bool b_bCheckCRC32;
-	// The translated file size/pos if the source is a XCD
-	uint64 m_VirtualFileSize;
-	uint64 m_VirtualFilePos;
-  uint32 m_SectorCount;
-	uint32 m_CurrentSectorNo;
-	uint16 m_CurrentSectorDataPos;
-	XCDSECTOR m_CurrentSector;
-};
-
-}; //End MatroskaUtilsNamespace
-
-#endif // _MATROSKAUTILS_READER_H_
+/*
+ *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
+ *
+ *  MatroskaUtilsReader.h
+ *
+ *  Copyright (C) Jory Stone - October 2003
+ *
+ *  Parts of the XCD parsing code based on code from alexnoe's AVIMux-GU=
I
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file MatroskaUtilsReader.h
+		\version \$Id: MatroskaUtilsReader.h,v 1.6 2004/02/18 06:52:18 jcsston=
 Exp $
+    \brief File IOCallback class Reader, supports XCD
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+#ifndef _MATROSKAUTILS_READER_H_
+#define _MATROSKAUTILS_READER_H_
+
+#include "JString.h"
+#include "ebml/EbmlCrc32.h"
+#include "ebml/IOCallback.h"
+#include "ebml/StdIOCallback.h"
+#include "ebml/MemIOCallback.h"
+#ifdef WIN32
+#include "WinIOCallback.h"
+#endif // WIN32
+
+using namespace LIBEBML_NAMESPACE;
+
+namespace MatroskaUtilsNamespace {
+
+#define CHECK_XCD_HEADER(x) \
+  (x[0] =3D=3D 0x00 && x[1] =3D=3D 0xFF && x[2] =3D=3D 0xFF && x[3] =3D=3D=
 0xFF && \
+  x[4] =3D=3D 0xFF && x[5] =3D=3D 0xFF && x[6] =3D=3D 0xFF && x[7] =3D=3D=
 0xFF && \
+  x[8] =3D=3D 0xFF && x[9] =3D=3D 0xFF && x[10] =3D=3D 0xFF && x[11] =3D=
=3D 0x00)
+
+#define XCD_SECTOR_SIZE 2352
+#define XCD_SECTOR_DATA_SIZE 2324
+
+#define MakeFourCC(chStr)                              \
+                ((DWORD)(BYTE)(chStr[0]) | ((DWORD)(BYTE)(chStr[1]) << 8=
) |   \
+                ((DWORD)(BYTE)(chStr[2]) << 16) | ((DWORD)(BYTE)(chStr[3=
]) << 24 ))
+
+struct CHUNKHEADER
+{
+	DWORD	dwFourCC;
+	DWORD dwLength;
+};
+
+struct LISTHEADER
+{
+	DWORD	dwListID;
+	DWORD dwLength;
+	DWORD dwFourCC;
+};
+
+struct XCDSECTOR {
+  byte sync[12];
+  byte header[4];
+  byte subheader[8];
+  byte data[2324];
+  byte edc[4];
+};
+
+class MatroskaUilsFileReader : public IOCallback
+{
+public:
+	MatroskaUilsFileReader(const char *Path, const open_mode Mode);
+	MatroskaUilsFileReader(const wchar_t *Path, const open_mode Mode);
+	~MatroskaUilsFileReader();
+
+	virtual uint32 read(void *Buffer, size_t Size);
+	virtual size_t write(const void *Buffer, size_t Size);
+	virtual void setFilePointer(int64 Offset, seek_mode Mode=3Dseek_beginni=
ng);
+	virtual uint64 getFilePointer();
+	virtual void close();
+ =20
+  virtual bool IsOk() { return m_fileHandle->IsOk(); };
+  virtual bool IsXCD() { return m_IsXCD; };
+ =20
+	WinIOCallback *GetWinIOCallback() { return m_fileHandle; };
+protected:
+  inline void Setup();
+  inline bool ReadNextXCDSector();
+ =20
+	WinIOCallback *m_fileHandle;
+	// XCD stuff
+	bool m_IsXCD;
+	bool b_bCheckCRC32;
+	// The translated file size/pos if the source is a XCD
+	uint64 m_VirtualFileSize;
+	uint64 m_VirtualFilePos;
+  uint32 m_SectorCount;
+	uint32 m_CurrentSectorNo;
+	uint16 m_CurrentSectorDataPos;
+	XCDSECTOR m_CurrentSector;
+};
+
+}; //End MatroskaUtilsNamespace
+
+#endif // _MATROSKAUTILS_READER_H_


Property changes on: trunk/MatroskaUtils/MatroskaUtilsReader.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/ShellExtension/CheckUsage/CheckUsage.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/ShellExtension/CheckUsage/CheckUsage.h	2007-02-17=
 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/ShellExtension/CheckUsage/CheckUsage.h	2007-02-17=
 10:55:54 UTC (rev 1277)
@@ -1,19 +1,19 @@
-
-#ifndef _CHECK_USAGE_H_
-#define _CHECK_USAGE_H_
-
-#include <windows.h>
-#include <commctrl.h>
-#include <Psapi.h>
-#include <tlhelp32.h>
-#include "resource.h"
-
-
-int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTST=
R lpCmdLine, int nCmdShow);
-BOOL CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa=
ram);
-void RefreshProcessList(HWND hWndListView);
-
-BOOL GetProcessList(HWND hWndListView);
-BOOL FindMatroskaPropModule(DWORD dwPID, LPMODULEENTRY32 lpMe32, DWORD c=
bMe32);
-
-#endif // _CHECK_USAGE_H_
+
+#ifndef _CHECK_USAGE_H_
+#define _CHECK_USAGE_H_
+
+#include <windows.h>
+#include <commctrl.h>
+#include <Psapi.h>
+#include <tlhelp32.h>
+#include "resource.h"
+
+
+int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTST=
R lpCmdLine, int nCmdShow);
+BOOL CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa=
ram);
+void RefreshProcessList(HWND hWndListView);
+
+BOOL GetProcessList(HWND hWndListView);
+BOOL FindMatroskaPropModule(DWORD dwPID, LPMODULEENTRY32 lpMe32, DWORD c=
bMe32);
+
+#endif // _CHECK_USAGE_H_


Property changes on: trunk/MatroskaUtils/ShellExtension/CheckUsage/CheckU=
sage.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/ShellExtension/CheckUsage/resource.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/ShellExtension/CheckUsage/resource.h	2007-02-17 1=
0:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/ShellExtension/CheckUsage/resource.h	2007-02-17 1=
0:55:54 UTC (rev 1277)
@@ -1,35 +1,35 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-// Used by CheckUsage.rc
-//
-#define IDC_MYICON                      2
-#define IDD_CHECKUSAGE_DIALOG           102
-#define IDS_APP_TITLE                   103
-#define IDD_ABOUTBOX                    103
-#define IDM_ABOUT                       104
-#define IDM_EXIT                        105
-#define IDI_CHECKUSAGE                  107
-#define IDI_SMALL                       108
-#define IDC_CHECKUSAGE                  109
-#define IDR_MAINFRAME                   128
-#define IDD_DIALOG_USAGE                129
-#define IDI_ICON_WRENCH                 130
-#define IDC_BUTTON_CLOSE                1000
-#define IDC_BUTTON_REFRESH              1001
-#define IDC_LIST_PROCESS_LIST           1002
-#define IDC_STATIC_GLOBAL_USAGE_COUNT   1004
-#define IDC_BUTTON_KILL_PROCESS         1005
-#define IDC_BUTTON_FORCE_UNLOAD         1006
-#define IDC_STATIC                      -1
-
-// Next default values for new objects
-//=20
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NO_MFC                     1
-#define _APS_NEXT_RESOURCE_VALUE        131
-#define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1007
-#define _APS_NEXT_SYMED_VALUE           110
-#endif
-#endif
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by CheckUsage.rc
+//
+#define IDC_MYICON                      2
+#define IDD_CHECKUSAGE_DIALOG           102
+#define IDS_APP_TITLE                   103
+#define IDD_ABOUTBOX                    103
+#define IDM_ABOUT                       104
+#define IDM_EXIT                        105
+#define IDI_CHECKUSAGE                  107
+#define IDI_SMALL                       108
+#define IDC_CHECKUSAGE                  109
+#define IDR_MAINFRAME                   128
+#define IDD_DIALOG_USAGE                129
+#define IDI_ICON_WRENCH                 130
+#define IDC_BUTTON_CLOSE                1000
+#define IDC_BUTTON_REFRESH              1001
+#define IDC_LIST_PROCESS_LIST           1002
+#define IDC_STATIC_GLOBAL_USAGE_COUNT   1004
+#define IDC_BUTTON_KILL_PROCESS         1005
+#define IDC_BUTTON_FORCE_UNLOAD         1006
+#define IDC_STATIC                      -1
+
+// Next default values for new objects
+//=20
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC                     1
+#define _APS_NEXT_RESOURCE_VALUE        131
+#define _APS_NEXT_COMMAND_VALUE         32771
+#define _APS_NEXT_CONTROL_VALUE         1007
+#define _APS_NEXT_SYMED_VALUE           110
+#endif
+#endif


Property changes on: trunk/MatroskaUtils/ShellExtension/CheckUsage/resour=
ce.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/ShellExtension/DShowTools/DShowTools.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/ShellExtension/DShowTools/DShowTools.h	2007-02-17=
 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/ShellExtension/DShowTools/DShowTools.h	2007-02-17=
 10:55:54 UTC (rev 1277)
@@ -1,52 +1,52 @@
-/*
- *  Part of the Matroska Shell Extension
- *
- *  DShowTools.h
- *
- *  Copyright (C) Jory Stone - June 2003
- *
- *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file CxImageRenderer.h
-		\version \$Id: DShowTools.h,v 1.3 2004/03/08 07:56:51 jcsston Exp $
-    \brief A DirectShow Video Renderer that renders the image to a CxIma=
ge
-		\author Jory Stone     <jcsston @ toughguy.net>
-
-*/
-
-#ifndef _CXIMAGE_RENDERER_H_
-#define _CXIMAGE_RENDERER_H_
-
-#include <windows.h>
-#include "CxImage/ximage.h"
-
-#define DSHOWTOOLS_DLL_EXPORT
-#ifndef DSHOWTOOLS_DLL_EXPORT
-#ifdef DSHOWTOOLS_DLL
-#define DSHOWTOOLS_DLL_EXPORT __declspec(dllexport)
-#else
-#define DSHOWTOOLS_DLL_EXPORT __declspec(dllimport)
-#endif
-#endif
-
-// Mode 1 =3D CxImageRenderer
-// Mode 2 =3D IMediaDet
-extern "C" HRESULT DSHOWTOOLS_DLL_EXPORT GetDShowPreview(LPCWSTR filenam=
e, DWORD second_offset, DWORD timeout, DWORD mode, CxImage *image);
-extern "C" HRESULT DSHOWTOOLS_DLL_EXPORT PlayFile(LPCWSTR filename, DWOR=
D mode);
-
-#endif // _CXIMAGE_RENDERER_H_
+/*
+ *  Part of the Matroska Shell Extension
+ *
+ *  DShowTools.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *
+ *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file CxImageRenderer.h
+		\version \$Id: DShowTools.h,v 1.3 2004/03/08 07:56:51 jcsston Exp $
+    \brief A DirectShow Video Renderer that renders the image to a CxIma=
ge
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+#ifndef _CXIMAGE_RENDERER_H_
+#define _CXIMAGE_RENDERER_H_
+
+#include <windows.h>
+#include "CxImage/ximage.h"
+
+#define DSHOWTOOLS_DLL_EXPORT
+#ifndef DSHOWTOOLS_DLL_EXPORT
+#ifdef DSHOWTOOLS_DLL
+#define DSHOWTOOLS_DLL_EXPORT __declspec(dllexport)
+#else
+#define DSHOWTOOLS_DLL_EXPORT __declspec(dllimport)
+#endif
+#endif
+
+// Mode 1 =3D CxImageRenderer
+// Mode 2 =3D IMediaDet
+extern "C" HRESULT DSHOWTOOLS_DLL_EXPORT GetDShowPreview(LPCWSTR filenam=
e, DWORD second_offset, DWORD timeout, DWORD mode, CxImage *image);
+extern "C" HRESULT DSHOWTOOLS_DLL_EXPORT PlayFile(LPCWSTR filename, DWOR=
D mode);
+
+#endif // _CXIMAGE_RENDERER_H_


Property changes on: trunk/MatroskaUtils/ShellExtension/DShowTools/DShowT=
ools.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/ShellExtension/DShowTools/convert.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/ShellExtension/DShowTools/convert.h	2007-02-17 10=
:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/ShellExtension/DShowTools/convert.h	2007-02-17 10=
:55:54 UTC (rev 1277)
@@ -1,67 +1,67 @@
-/*
- *  Part of the Matroska Shell Extension
- *
- *  convert.h
- *
- *  Copyright (C) Jory Stone - March 2004
- *
- *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file convert.h
-		\version \$Id: convert.h,v 1.2 2004/04/28 04:21:55 jcsston Exp $
-    \brief YUV Image Conversion Code
-		\author Jory Stone     <jcsston @ toughguy.net>
-*/
-
-#ifndef _CONVERT_H_
-#define _CONVERT_H_
-
-#include <windows.h>
-
-extern "C" {
-//Declare for assembly YUV2->RGB32 conversion
-void _stdcall YUV422toRGB_MMX(void* lpIn,void* lpOut,DWORD dwFlags,DWORD=
 dwWidth,DWORD dwHeight,DWORD dwSPitch,DWORD dwDPitch);
-void _stdcall YUV422toRGB24_MMX(void* lpIn,void* lpOut,DWORD dwFlags,DWO=
RD dwWidth,DWORD dwHeight,DWORD dwSPitch,DWORD dwDPitch);
-//I don't use these, but it's nice to have the declares
-void _stdcall RGBtoYCrCb_SSE2(void* lpIn,void* lpOut,DWORD dwFlags,DWORD=
 dwWidth,DWORD dwHeight,DWORD dwSPitch,DWORD dwDPitch);=20
-void _stdcall RGBtoYUV422_SSE2(void* lpIn,void* lpOut,DWORD dwFlags,DWOR=
D dwWidth,DWORD dwHeight,DWORD dwSPitch,DWORD dwDPitch);=20
-};
-
-// from convert_yv12.cpp
-void mmx_yv12_to_yuy2(const BYTE* srcY, const BYTE* srcU, const BYTE* sr=
cV, int src_rowsize, int src_pitch, int src_pitch_uv,=20
-                    BYTE* dst, int dst_pitch,
-                    int height);
-
-// from convert_xvid.cpp
-void yv12_to_rgb32_mmx(BYTE *dst,=20
-                         int dst_stride,=20
-                         const BYTE *y_src,
-                         const BYTE *u_src,
-                         const BYTE *v_src,=20
-                         int y_stride, int uv_stride,
-                         int width, int height);
-void yv12_to_rgb24_mmx(BYTE *dst, //Currently not used (buggy!)
-                         int dst_stride,=20
-                         const BYTE *y_src,
-                         const BYTE *u_src,
-                         const BYTE *v_src,=20
-                         int y_stride, int uv_stride,
-                         int width, int height);
-
-
-#endif // _CONVERT_H_
+/*
+ *  Part of the Matroska Shell Extension
+ *
+ *  convert.h
+ *
+ *  Copyright (C) Jory Stone - March 2004
+ *
+ *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file convert.h
+		\version \$Id: convert.h,v 1.2 2004/04/28 04:21:55 jcsston Exp $
+    \brief YUV Image Conversion Code
+		\author Jory Stone     <jcsston @ toughguy.net>
+*/
+
+#ifndef _CONVERT_H_
+#define _CONVERT_H_
+
+#include <windows.h>
+
+extern "C" {
+//Declare for assembly YUV2->RGB32 conversion
+void _stdcall YUV422toRGB_MMX(void* lpIn,void* lpOut,DWORD dwFlags,DWORD=
 dwWidth,DWORD dwHeight,DWORD dwSPitch,DWORD dwDPitch);
+void _stdcall YUV422toRGB24_MMX(void* lpIn,void* lpOut,DWORD dwFlags,DWO=
RD dwWidth,DWORD dwHeight,DWORD dwSPitch,DWORD dwDPitch);
+//I don't use these, but it's nice to have the declares
+void _stdcall RGBtoYCrCb_SSE2(void* lpIn,void* lpOut,DWORD dwFlags,DWORD=
 dwWidth,DWORD dwHeight,DWORD dwSPitch,DWORD dwDPitch);=20
+void _stdcall RGBtoYUV422_SSE2(void* lpIn,void* lpOut,DWORD dwFlags,DWOR=
D dwWidth,DWORD dwHeight,DWORD dwSPitch,DWORD dwDPitch);=20
+};
+
+// from convert_yv12.cpp
+void mmx_yv12_to_yuy2(const BYTE* srcY, const BYTE* srcU, const BYTE* sr=
cV, int src_rowsize, int src_pitch, int src_pitch_uv,=20
+                    BYTE* dst, int dst_pitch,
+                    int height);
+
+// from convert_xvid.cpp
+void yv12_to_rgb32_mmx(BYTE *dst,=20
+                         int dst_stride,=20
+                         const BYTE *y_src,
+                         const BYTE *u_src,
+                         const BYTE *v_src,=20
+                         int y_stride, int uv_stride,
+                         int width, int height);
+void yv12_to_rgb24_mmx(BYTE *dst, //Currently not used (buggy!)
+                         int dst_stride,=20
+                         const BYTE *y_src,
+                         const BYTE *u_src,
+                         const BYTE *v_src,=20
+                         int y_stride, int uv_stride,
+                         int width, int height);
+
+
+#endif // _CONVERT_H_


Property changes on: trunk/MatroskaUtils/ShellExtension/DShowTools/conver=
t.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/ShellExtension/Http.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/ShellExtension/Http.h	2007-02-17 10:34:40 UTC (re=
v 1276)
+++ trunk/MatroskaUtils/ShellExtension/Http.h	2007-02-17 10:55:54 UTC (re=
v 1277)
@@ -1,33 +1,33 @@
-#ifndef _HTTP_H_
-#define _HTTP_H_
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <winsock.h>
-#include <windows.h>
-#include <string>
-#include "JString.h"
-
-// try to tell linker where WinSock library is
-#if defined(_MSC_VER)
-#   pragma comment(lib,"wsock32.lib")
-#elif defined(__BORLANDC__)
-#   pragma comment(lib,"mswsock.lib")
-#endif
-
-
-class CHttp
-{
-public:
-  CHttp();
-  ~CHttp();
-
-  std::string ReadPage(const std::string &Host, const std::string &Page)=
;
- =20
-  static JString ConvertToValidURI(JString uri);
-private:
-  WSADATA m_WsaData;
-};
-
+#ifndef _HTTP_H_
+#define _HTTP_H_
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <winsock.h>
+#include <windows.h>
+#include <string>
+#include "JString.h"
+
+// try to tell linker where WinSock library is
+#if defined(_MSC_VER)
+#   pragma comment(lib,"wsock32.lib")
+#elif defined(__BORLANDC__)
+#   pragma comment(lib,"mswsock.lib")
+#endif
+
+
+class CHttp
+{
+public:
+  CHttp();
+  ~CHttp();
+
+  std::string ReadPage(const std::string &Host, const std::string &Page)=
;
+ =20
+  static JString ConvertToValidURI(JString uri);
+private:
+  WSADATA m_WsaData;
+};
+
 #endif // _HTTP_H_
\ No newline at end of file


Property changes on: trunk/MatroskaUtils/ShellExtension/Http.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.h	2007-02-=
17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.h	2007-02-=
17 10:55:54 UTC (rev 1277)
@@ -1,60 +1,60 @@
-/*
- *  Matroska Shell Extension
- *
- *  MatroskaInfoParserCache.h
- *
- *  Copyright (C) Jory Stone - June 2003 - December 2004
- *
- *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file MatroskaInfoParserCache.h
-		\version \$Id: MatroskaProp.cpp,v 1.39 2004/03/08 07:56:51 jcsston Exp=
 $
-    \brief Lightweight caching Matroska Parser object list
-		\author Jory Stone     <matroskaprop @ jory.info>
-
-*/
-
-#ifndef _MATROSKA_INFO_PARSER_CACHE_H_
-#define _MATROSKA_INFO_PARSER_CACHE_H_
-
-#include <windows.h>
-#include "MatroskaPages.h"
-
-class MatroskaInfoParserCache {
-public:
-	MatroskaInfoParserCache();
-	~MatroskaInfoParserCache();
-=09
-	void AddParser(MatroskaInfoParser *parser);
-	MatroskaInfoParser *Lookup(const wchar_t *filename);
-
-#ifdef DEBUG
-	void OutputList();
-#endif
-protected:
-	int m_CacheCount;
-	int m_CacheLimit;
-	struct MatroskaInfoParserCacheEntry {
-		MatroskaInfoParser *parser;
-		MatroskaInfoParserCacheEntry *next;
-	};
-	MatroskaInfoParserCacheEntry *m_First;
-	MatroskaInfoParserCacheEntry *m_Last;
-};
-
-#endif // _MATROSKA_INFO_PARSER_CACHE_H_
+/*
+ *  Matroska Shell Extension
+ *
+ *  MatroskaInfoParserCache.h
+ *
+ *  Copyright (C) Jory Stone - June 2003 - December 2004
+ *
+ *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file MatroskaInfoParserCache.h
+		\version \$Id: MatroskaProp.cpp,v 1.39 2004/03/08 07:56:51 jcsston Exp=
 $
+    \brief Lightweight caching Matroska Parser object list
+		\author Jory Stone     <matroskaprop @ jory.info>
+
+*/
+
+#ifndef _MATROSKA_INFO_PARSER_CACHE_H_
+#define _MATROSKA_INFO_PARSER_CACHE_H_
+
+#include <windows.h>
+#include "MatroskaPages.h"
+
+class MatroskaInfoParserCache {
+public:
+	MatroskaInfoParserCache();
+	~MatroskaInfoParserCache();
+=09
+	void AddParser(MatroskaInfoParser *parser);
+	MatroskaInfoParser *Lookup(const wchar_t *filename);
+
+#ifdef DEBUG
+	void OutputList();
+#endif
+protected:
+	int m_CacheCount;
+	int m_CacheLimit;
+	struct MatroskaInfoParserCacheEntry {
+		MatroskaInfoParser *parser;
+		MatroskaInfoParserCacheEntry *next;
+	};
+	MatroskaInfoParserCacheEntry *m_First;
+	MatroskaInfoParserCacheEntry *m_Last;
+};
+
+#endif // _MATROSKA_INFO_PARSER_CACHE_H_


Property changes on: trunk/MatroskaUtils/ShellExtension/MatroskaInfoParse=
rCache.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/ShellExtension/MatroskaProp.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/ShellExtension/MatroskaProp.h	2007-02-17 10:34:40=
 UTC (rev 1276)
+++ trunk/MatroskaUtils/ShellExtension/MatroskaProp.h	2007-02-17 10:55:54=
 UTC (rev 1277)
@@ -1,501 +1,501 @@
-/*
- *  Matroska Shell Extension
- *
- *  MatroskaProp.h
- *
- *  Copyright (C) Jory Stone - June 2003
- *
- *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file MatroskaProp.h
-		\version \$Id: MatroskaProp.h,v 1.22 2004/03/07 08:08:49 jcsston Exp $
-    \brief This is the meat code of the Matroska Shell Extension
-		\author Jory Stone     <jcsston @ toughguy.net>
-
-*/
-
-#ifndef _MATROSKAPROP_H
-#define _MATROSKAPROP_H
-
-#include "CxImage/ximage.h"
-
-#include "MatroskaPages.h"
-#include <list>
-#include <memory>
-//#include "streams.h"
-//#include "Dshow.h"
-//#include "Qedit.h"
-//#include "Dvdmedia.h"
-#include "MatroskaInfoParserCache.h"
-#include "MatroskaPropShellExtension.h"
-
-#ifdef USE_MUXER
-//Matroska Muxer CLISD
-//[uuid("1E1299A2-9D42-4F12-8791-D79E376F4143")]
-DEFINE_GUID(CLSID_MatroskaMuxer, 0x1E1299A2, 0x9D42, 0x4F12, 0x87, 0x91,=
 0xD7, 0x9E, 0x37, 0x6F, 0x41, 0x43);
-#endif // USE_MUXER
-
-// The class ID of this Shell extension class:
-// {780BCB64-0CAF-473c-A9FC-E08C03D75515}
-#define MatroskaPageCLSID _T("{780BCB64-0CAF-473c-A9FC-E08C03D75515}")
-DEFINE_GUID(CLSID_MatroskaPage_ShellExtension, 0x780bcb64, 0xcaf, 0x473c=
, 0xa9, 0xfc, 0xe0, 0x8c, 0x3, 0xd7, 0x55, 0x15);
-
-// {78DC191E-EFC1-4532-9A71-224577A86A7D}
-#define MatroskaThumbnailCLSID _T("{78DC191E-EFC1-4532-9A71-224577A86A7D=
}")
-DEFINE_GUID(CLSID_MatroskaThumbnail_ShellExtension, 0x78dc191e, 0xefc1, =
0x4532, 0x9a, 0x71, 0x22, 0x45, 0x77, 0xa8, 0x6a, 0x7d);
-
-// {794D04CA-70AC-4020-80EB-FFD59DEF8027}
-#define MatroskaTooltipCLSID _T("{794D04CA-70AC-4020-80EB-FFD59DEF8027}"=
)
-DEFINE_GUID(CLSID_MatroskaTooltip_ShellExtension, 0x794d04ca, 0x70ac, 0x=
4020, 0x80, 0xeb, 0xff, 0xd5, 0x9d, 0xef, 0x80, 0x27);
-
-// {781395AF-A127-469f-A06F-59B482AF4F3F}
-#define MatroskaColumnProviderCLSID _T("{781395AF-A127-469f-A06F-59B482A=
F4F3F}")
-DEFINE_GUID(CLSID_MatroskaColumnProvider_ShellExtension, 0x781395af, 0xa=
127, 0x469f, 0xa0, 0x6f, 0x59, 0xb4, 0x82, 0xaf, 0x4f, 0x3f);
-
-// {789111D8-68A3-46a3-9663-145A3FF4C9C9}
-#define MatroskaContextMenuCLSID _T("{789111D8-68A3-46a3-9663-145A3FF4C9=
C9}")
-DEFINE_GUID(CLSID_MatroskaContextMenu_ShellExtension, 0x789111d8, 0x68a3=
, 0x46a3, 0x96, 0x63, 0x14, 0x5a, 0x3f, 0xf4, 0xc9, 0xc9);
-
-// {78678AF0-0E87-4958-A99B-A23FAFC0D92D}
-#define MatroskaShellIconCLSID _T("{78678AF0-0E87-4958-A99B-A23FAFC0D92D=
}")
-DEFINE_GUID(CLSID_MatroskaShellIcon_ShellExtension,=20
-0x78678af0, 0xe87, 0x4958, 0xa9, 0x9b, 0xa2, 0x3f, 0xaf, 0xc0, 0xd9, 0x2=
d);
-
-STDAPI DllRegisterServer(void);
-STDAPI DllUnregisterServer(void);
-STDAPI GetMatroskaPropVersion(void);
-STDAPI ConfigureOptions(void);
-STDAPI VistUnicowsWebsite(void);
-
-class MatroskaProp
-{
-public:
-	MatroskaProp();
-	~MatroskaProp();=09
-	int Install();
-	int Uninstall();
-
-	int ChooseIcon();
-
-protected:
-	void SetupKeys();
-	void LoadKeyList();
-
-	bool m_Installed;
-	bool m_Uninstalled;
-	TCHAR dllFilename[MAX_MATROSKA_PATH];
-	TCHAR *key_list[28][3];
-	TCHAR *supported_ext[5];
-	TCHAR *ext_key_list[4][3];
-	TCHAR *approved_list[7][2];
-	std::list<JString> m_keyList;
-};
-
-class CShellExtClassFactory : public IClassFactory
-{
-protected:
-	ULONG	m_cRef;
-
-public:
-	CShellExtClassFactory();
-	~CShellExtClassFactory();
-
-	//IUnknown members
-	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)	AddRef();
-	STDMETHODIMP_(ULONG)	Release();
-
-	//IClassFactory members
-	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
-	STDMETHODIMP		LockServer(BOOL);
-
-};
-typedef CShellExtClassFactory *LPCSHELLEXTCLASSFACTORY;
-
-class CShellExt : public IShellExtInit, IShellPropSheetExt, MatroskaProp=
ShellExtension
-{
-public:
-	TCHAR szFile[MAX_MATROSKA_PATH];
-	//VSAP
-
-protected:
-	ULONG        m_cRef;
-	LPDATAOBJECT m_pDataObj;
-	MatroskaPages *pageData;
-
-public:
-	CShellExt();
-	~CShellExt();
-
-	//IUnknown members
-	STDMETHODIMP            QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)    AddRef();
-	STDMETHODIMP_(ULONG)    Release();
-
-	//IShellExtInit methods
-	STDMETHODIMP            Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJEC=
T pDataObj, HKEY hKeyID);
-
-	//IShellPropSheetExt methods
-	STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
-
-	STDMETHODIMP ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplace=
With, LPARAM lParam);
-
-};
-typedef CShellExt *LPCSHELLEXT;
-
-class CToolTipClassFactory : public IClassFactory
-{
-protected:
-	ULONG	m_cRef;
-
-public:
-	CToolTipClassFactory();
-	~CToolTipClassFactory();
-
-	//IUnknown members
-	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)	AddRef();
-	STDMETHODIMP_(ULONG)	Release();
-
-	//IClassFactory members
-	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
-	STDMETHODIMP		LockServer(BOOL);
-
-};
-typedef CToolTipClassFactory *LPCTOOLTIPCLASSFACTORY;
-
-class CToolTip : public IQueryInfo, IPersistFile, MatroskaPropShellExten=
sion
-{
-public:=09
-	CToolTip();
-	~CToolTip();
-
-	//IUnknown members
-	STDMETHODIMP QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG) AddRef();
-	STDMETHODIMP_(ULONG) Release();
-
-	//IPersistFile methods
-	STDMETHODIMP GetClassID(CLSID *pCLSID) {ODS("CToolTip::GetClassID()"); =
return E_NOTIMPL;};
-	STDMETHODIMP Load(LPCOLESTR pOleStr, DWORD dwMode);
-	STDMETHODIMP IsDirty(void) { ODS("CToolTip::IsDirty()"); return E_NOTIM=
PL;};       =20
-	/// \param pszFileName [unique][in]
-	/// \param fRemember [in]
-  STDMETHODIMP Save(LPCOLESTR pszFileName, BOOL fRemember) { ODS("CToolT=
ip::Save()"); return E_NOTIMPL;}; =20
-	/// \param pszFileName [unique][in]
-  STDMETHODIMP SaveCompleted(LPCOLESTR pszFileName) { ODS("CToolTip::Sav=
eCompleted()"); return E_NOTIMPL;}; =20
-	/// \param ppszFileName [out]
-  STDMETHODIMP GetCurFile(LPOLESTR *ppszFileName) { ODS("CToolTip::GetCu=
rFile()"); return E_NOTIMPL;};
-
-	//IToolTip methods
-	STDMETHODIMP GetInfoFlags(DWORD *pdwFlags);
-	STDMETHODIMP GetInfoTip(DWORD dwFlags, LPWSTR *ppwszTip);
-
-	DWORD m_dwMode;=09
-
-	wchar_t m_szFileName[MAX_MATROSKA_PATH];
-
-protected:
-	ULONG        m_cRef;
-	LPDATAOBJECT m_pDataObj;
-};
-typedef CToolTip *LPCTOOLTIP;
-
-class CThumbnailClassFactory : public IClassFactory
-{
-protected:
-	ULONG	m_cRef;
-
-public:
-	CThumbnailClassFactory();
-	~CThumbnailClassFactory();
-
-	//IUnknown members
-	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)	AddRef();
-	STDMETHODIMP_(ULONG)	Release();
-
-	//IClassFactory members
-	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
-	STDMETHODIMP		LockServer(BOOL);
-
-};
-typedef CThumbnailClassFactory *LPCTHUMBNAILCLASSFACTORY;
-
-class CThumbnail : public IExtractImage, IPersistFile, IRunnableTask, Ma=
troskaPropShellExtension
-{
-public:=09
-	CThumbnail();
-	~CThumbnail();
-
-	//IUnknown members
-	STDMETHODIMP QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG) AddRef();
-	STDMETHODIMP_(ULONG) Release();
-
-	//IPersistFile methods
-	STDMETHODIMP GetClassID(CLSID *pCLSID) {ODS("CThumbnail::GetClassID()")=
; return E_NOTIMPL;};
-	STDMETHODIMP Load(LPCOLESTR pOleStr, DWORD dwMode);
-	STDMETHODIMP IsDirty(void) { ODS("CThumbnail::IsDirty()"); return E_NOT=
IMPL;};       =20
-	/// \param pszFileName [unique][in]
-	/// \param fRemember [in]
-  STDMETHODIMP Save(LPCOLESTR pszFileName, BOOL fRemember) { ODS("CThumb=
nail::Save()"); return E_NOTIMPL;}; =20
-	/// \param pszFileName [unique][in]
-  STDMETHODIMP SaveCompleted(LPCOLESTR pszFileName) { ODS("CThumbnail::S=
aveCompleted()"); return E_NOTIMPL;}; =20
-	/// \param ppszFileName [out]
-  STDMETHODIMP GetCurFile(LPOLESTR *ppszFileName) { ODS("CThumbnail::Get=
CurFile()"); return E_NOTIMPL;};
-
-	//IRunnableTask methods
-	STDMETHODIMP Run() { ODS("CThumbnail::Run()"); return E_NOTIMPL;};     =
  =20
-	STDMETHODIMP Kill(BOOL fWait) { ODS("CThumbnail::Kill()"); return E_NOT=
IMPL;};
-	STDMETHODIMP Suspend() { ODS("CThumbnail::Suspend()"); return E_NOTIMPL=
;};       =20
-	STDMETHODIMP Resume() { ODS("CThumbnail::Resume()"); return E_NOTIMPL;}=
;
-	STDMETHODIMP_(ULONG) IsRunning() { ODS("CThumbnail::IsRunning()"); retu=
rn m_ThreadState;};
-
-	//IExtractImage methods
-	/// \param pszPathBuffer [size_is][out]
-	/// \param cch [in]=20
-	/// \param pdwPriority [unique][out][in]
-	/// \param prgSize [in]=20
-	/// \param dwRecClrDepth [in]
-	/// \param pdwFlags [in]
-  STDMETHODIMP GetLocation(LPWSTR pszPathBuffer, DWORD cch, DWORD *pdwPr=
iority, const SIZE *prgSize, DWORD dwRecClrDepth, DWORD *pdwFlags);
-  /// \param phBmpThumbnail  [out]
-  STDMETHODIMP Extract(HBITMAP *phBmpThumbnail);
-
-	DWORD m_dwMode;
-	wchar_t m_szFileName[MAX_MATROSKA_PATH];
-
-protected:
-	ULONG m_ThreadState;
-	DWORD m_height;
-	DWORD m_width;
-	DWORD m_color_depth;
-
-	ULONG        m_cRef;
-	LPDATAOBJECT m_pDataObj;
-};
-typedef CThumbnail *LPCTHUMBNAIL;
-
-class CColumnProviderClassFactory : public IClassFactory
-{
-protected:
-	ULONG	m_cRef;
-
-public:
-	CColumnProviderClassFactory();
-	~CColumnProviderClassFactory();
-
-	//IUnknown members
-	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)	AddRef();
-	STDMETHODIMP_(ULONG)	Release();
-
-	//IClassFactory members
-	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
-	STDMETHODIMP		LockServer(BOOL);
-
-};
-typedef CColumnProviderClassFactory *LPCCOLUMNPROVIDERCLASSFACTORY;
-
-class CColumnProvider : public IColumnProvider, MatroskaPropShellExtensi=
on
-{
-public:
-	CColumnProvider();
-	~CColumnProvider();
-
-	//IUnknown members
-	STDMETHODIMP            QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)    AddRef();
-	STDMETHODIMP_(ULONG)    Release();
-
-  // IColumnProvider methods
-  STDMETHODIMP Initialize(LPCSHCOLUMNINIT psci);
-  STDMETHODIMP GetColumnInfo(DWORD dwIndex, SHCOLUMNINFO *psci);
-  STDMETHODIMP GetItemData(LPCSHCOLUMNID pscid, LPCSHCOLUMNDATA pscd, VA=
RIANT *pvarData);
-
-protected:=09
-	/// Filename
-	TCHAR m_szFile[MAX_MATROSKA_PATH];
-	wchar_t m_szFolder[MAX_PATH];
-=09
-	ULONG        m_cRef;
-	LPDATAOBJECT m_pDataObj;
-};
-typedef CColumnProvider *LPCCOLUMNPROVIDER;
-
-class CContextMenuClassFactory : public IClassFactory
-{
-protected:
-	ULONG	m_cRef;
-
-public:
-	CContextMenuClassFactory();
-	~CContextMenuClassFactory();
-
-	//IUnknown members
-	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)	AddRef();
-	STDMETHODIMP_(ULONG)	Release();
-
-	//IClassFactory members
-	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
-	STDMETHODIMP		LockServer(BOOL);
-
-};
-typedef CContextMenuClassFactory *LPCCONTEXTMENUCLASSFACTORY;
-
-struct MatroskaAttachmentMenuItem {
-	HMENU hmAttachmentItem;
-	UINT uPosition;
-	UINT uIDNewItem;
-	MatroskaAttachmentItem *attachmentSource;
-};
-
-struct MatroskaAttachmentMenuClickItem {
-	UINT uItemID;
-	MatroskaAttachmentItem *attachmentSource;
-};
-
-class CContextMenu : public IShellExtInit, IContextMenu3, MatroskaPropSh=
ellExtension
-{
-public:
-	CContextMenu();
-	~CContextMenu();
-
-	//IUnknown members
-	STDMETHODIMP            QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)    AddRef();
-	STDMETHODIMP_(ULONG)    Release();
-
-	//IShellExtInit methods
-	STDMETHODIMP            Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJEC=
T pDataObj, HKEY hKeyID);
-
-	// IContextMenu methods
-	STDMETHODIMP GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwRese=
rved, LPSTR pszName, UINT cchMax);
-	STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
-	STDMETHODIMP QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFi=
rst, UINT idCmdLast, UINT uFlags);
-
-	// IContextMenu2 methods
-	STDMETHODIMP HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
-
-	// IContextMenu3 methods
-	STDMETHODIMP HandleMenuMsg2(UINT uMsg, WPARAM wParam, LPARAM lParam, LR=
ESULT *plResult);
-
-	// Msg handler
-	STDMETHODIMP MenuMessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam=
, LRESULT *plResult);
-protected:
-	//Internal Functions
-	void AddChapterItem_Menu(HMENU parent, MatroskaChapterEntry *chapter, s=
td::wstring chapterTitle, UINT &idCmd, UINT &indexMenu);
-	std::vector<UINT> m_TrackCmdID;
-	std::vector<MatroskaAttachmentMenuClickItem> m_AttachmentCmdID;
-=09
-	std::vector<MatroskaAttachmentMenuItem *> m_Attachments;
-	/// Filename
-	TCHAR m_szFile[MAX_MATROSKA_PATH];
-=09
-	ULONG        m_cRef;
-	LPDATAOBJECT m_pDataObj;
-
-};
-typedef CContextMenu *LPCCONTEXTMENU;
-
-class CShellIconClassFactory : public IClassFactory
-{
-protected:
-	ULONG	m_cRef;
-
-public:
-	CShellIconClassFactory();
-	~CShellIconClassFactory();
-
-	//IUnknown members
-	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)	AddRef();
-	STDMETHODIMP_(ULONG)	Release();
-
-	//IClassFactory members
-	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
-	STDMETHODIMP		LockServer(BOOL);
-
-};
-typedef CShellIconClassFactory *LPCSHELLICONCLASSFACTORY;
-
-class CShellIcon : public IPersistFile, IExtractIcon, MatroskaPropShellE=
xtension
-{
-public:
-	CShellIcon();
-	~CShellIcon();
-
-	//IUnknown members
-	STDMETHODIMP            QueryInterface(REFIID, LPVOID *);
-	STDMETHODIMP_(ULONG)    AddRef();
-	STDMETHODIMP_(ULONG)    Release();
-
-	//IPersistFile methods
-	STDMETHODIMP GetClassID(CLSID *pCLSID) {ODS("CShellIcon::GetClassID()")=
; return E_NOTIMPL;};
-	STDMETHODIMP Load(LPCOLESTR pOleStr, DWORD dwMode);
-	STDMETHODIMP IsDirty(void) { ODS("CShellIcon::IsDirty()"); return E_NOT=
IMPL;};       =20
-	/// \param pszFileName [unique][in]
-	/// \param fRemember [in]
-  STDMETHODIMP Save(LPCOLESTR pszFileName, BOOL fRemember) { ODS("CShell=
Icon::Save()"); return E_NOTIMPL;}; =20
-	/// \param pszFileName [unique][in]
-  STDMETHODIMP SaveCompleted(LPCOLESTR pszFileName) { ODS("CShellIcon::S=
aveCompleted()"); return E_NOTIMPL;}; =20
-	/// \param ppszFileName [out]
-  STDMETHODIMP GetCurFile(LPOLESTR *ppszFileName) { ODS("CShellIcon::Get=
CurFile()"); return E_NOTIMPL;};
-
-	// IExtractIcon methods =20
-	STDMETHODIMP GetIconLocation(UINT uFlags, LPTSTR szIconFile, UINT cchMa=
x, int* piIndex, UINT* pwFlags);
-  STDMETHODIMP Extract(LPCTSTR pszFile, UINT nIconIndex, HICON* phiconLa=
rge, HICON* phiconSmall, UINT nIconSize);
-
-protected:
-	DWORD m_dwMode;
-	wchar_t m_szFileName[MAX_MATROSKA_PATH];
-
-
-	ULONG        m_cRef;
-	LPDATAOBJECT m_pDataObj;
-};
-typedef CShellIcon *LPCSHELLICON;
-
-#ifdef USE_MUXER
-enum MatroskaSimpleMuxerModes
-{
-	MatroskaMux_DShow,
-	MatroskaMux_mkvmerge
-};
-///This is a simple class to mux files into Matroska via DShow, mkvmerge
-class MatroskaSimpleMuxer
-{
-public:
-	MatroskaSimpleMuxer(enum MatroskaSimpleMuxerModes type =3D MatroskaMux_=
DShow);
-	~MatroskaSimpleMuxer();
-	HRESULT AddInputFile(JString &inputFilename);
-	HRESULT MuxToMatroska();
-
-protected:
-	HRESULT MuxViaDShow();
-	HRESULT MuxViaMkvmerge();
-
-	enum MatroskaSimpleMuxerModes muxerType;
-	std::vector<JString> inputFilenames;
-	JString outputFilename;
-};
-#endif // USE_MUXER
-
-#endif // _MATROSKAPROP_H
+/*
+ *  Matroska Shell Extension
+ *
+ *  MatroskaProp.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *
+ *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file MatroskaProp.h
+		\version \$Id: MatroskaProp.h,v 1.22 2004/03/07 08:08:49 jcsston Exp $
+    \brief This is the meat code of the Matroska Shell Extension
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+#ifndef _MATROSKAPROP_H
+#define _MATROSKAPROP_H
+
+#include "CxImage/ximage.h"
+
+#include "MatroskaPages.h"
+#include <list>
+#include <memory>
+//#include "streams.h"
+//#include "Dshow.h"
+//#include "Qedit.h"
+//#include "Dvdmedia.h"
+#include "MatroskaInfoParserCache.h"
+#include "MatroskaPropShellExtension.h"
+
+#ifdef USE_MUXER
+//Matroska Muxer CLISD
+//[uuid("1E1299A2-9D42-4F12-8791-D79E376F4143")]
+DEFINE_GUID(CLSID_MatroskaMuxer, 0x1E1299A2, 0x9D42, 0x4F12, 0x87, 0x91,=
 0xD7, 0x9E, 0x37, 0x6F, 0x41, 0x43);
+#endif // USE_MUXER
+
+// The class ID of this Shell extension class:
+// {780BCB64-0CAF-473c-A9FC-E08C03D75515}
+#define MatroskaPageCLSID _T("{780BCB64-0CAF-473c-A9FC-E08C03D75515}")
+DEFINE_GUID(CLSID_MatroskaPage_ShellExtension, 0x780bcb64, 0xcaf, 0x473c=
, 0xa9, 0xfc, 0xe0, 0x8c, 0x3, 0xd7, 0x55, 0x15);
+
+// {78DC191E-EFC1-4532-9A71-224577A86A7D}
+#define MatroskaThumbnailCLSID _T("{78DC191E-EFC1-4532-9A71-224577A86A7D=
}")
+DEFINE_GUID(CLSID_MatroskaThumbnail_ShellExtension, 0x78dc191e, 0xefc1, =
0x4532, 0x9a, 0x71, 0x22, 0x45, 0x77, 0xa8, 0x6a, 0x7d);
+
+// {794D04CA-70AC-4020-80EB-FFD59DEF8027}
+#define MatroskaTooltipCLSID _T("{794D04CA-70AC-4020-80EB-FFD59DEF8027}"=
)
+DEFINE_GUID(CLSID_MatroskaTooltip_ShellExtension, 0x794d04ca, 0x70ac, 0x=
4020, 0x80, 0xeb, 0xff, 0xd5, 0x9d, 0xef, 0x80, 0x27);
+
+// {781395AF-A127-469f-A06F-59B482AF4F3F}
+#define MatroskaColumnProviderCLSID _T("{781395AF-A127-469f-A06F-59B482A=
F4F3F}")
+DEFINE_GUID(CLSID_MatroskaColumnProvider_ShellExtension, 0x781395af, 0xa=
127, 0x469f, 0xa0, 0x6f, 0x59, 0xb4, 0x82, 0xaf, 0x4f, 0x3f);
+
+// {789111D8-68A3-46a3-9663-145A3FF4C9C9}
+#define MatroskaContextMenuCLSID _T("{789111D8-68A3-46a3-9663-145A3FF4C9=
C9}")
+DEFINE_GUID(CLSID_MatroskaContextMenu_ShellExtension, 0x789111d8, 0x68a3=
, 0x46a3, 0x96, 0x63, 0x14, 0x5a, 0x3f, 0xf4, 0xc9, 0xc9);
+
+// {78678AF0-0E87-4958-A99B-A23FAFC0D92D}
+#define MatroskaShellIconCLSID _T("{78678AF0-0E87-4958-A99B-A23FAFC0D92D=
}")
+DEFINE_GUID(CLSID_MatroskaShellIcon_ShellExtension,=20
+0x78678af0, 0xe87, 0x4958, 0xa9, 0x9b, 0xa2, 0x3f, 0xaf, 0xc0, 0xd9, 0x2=
d);
+
+STDAPI DllRegisterServer(void);
+STDAPI DllUnregisterServer(void);
+STDAPI GetMatroskaPropVersion(void);
+STDAPI ConfigureOptions(void);
+STDAPI VistUnicowsWebsite(void);
+
+class MatroskaProp
+{
+public:
+	MatroskaProp();
+	~MatroskaProp();=09
+	int Install();
+	int Uninstall();
+
+	int ChooseIcon();
+
+protected:
+	void SetupKeys();
+	void LoadKeyList();
+
+	bool m_Installed;
+	bool m_Uninstalled;
+	TCHAR dllFilename[MAX_MATROSKA_PATH];
+	TCHAR *key_list[28][3];
+	TCHAR *supported_ext[5];
+	TCHAR *ext_key_list[4][3];
+	TCHAR *approved_list[7][2];
+	std::list<JString> m_keyList;
+};
+
+class CShellExtClassFactory : public IClassFactory
+{
+protected:
+	ULONG	m_cRef;
+
+public:
+	CShellExtClassFactory();
+	~CShellExtClassFactory();
+
+	//IUnknown members
+	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)	AddRef();
+	STDMETHODIMP_(ULONG)	Release();
+
+	//IClassFactory members
+	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
+	STDMETHODIMP		LockServer(BOOL);
+
+};
+typedef CShellExtClassFactory *LPCSHELLEXTCLASSFACTORY;
+
+class CShellExt : public IShellExtInit, IShellPropSheetExt, MatroskaProp=
ShellExtension
+{
+public:
+	TCHAR szFile[MAX_MATROSKA_PATH];
+	//VSAP
+
+protected:
+	ULONG        m_cRef;
+	LPDATAOBJECT m_pDataObj;
+	MatroskaPages *pageData;
+
+public:
+	CShellExt();
+	~CShellExt();
+
+	//IUnknown members
+	STDMETHODIMP            QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)    AddRef();
+	STDMETHODIMP_(ULONG)    Release();
+
+	//IShellExtInit methods
+	STDMETHODIMP            Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJEC=
T pDataObj, HKEY hKeyID);
+
+	//IShellPropSheetExt methods
+	STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
+
+	STDMETHODIMP ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplace=
With, LPARAM lParam);
+
+};
+typedef CShellExt *LPCSHELLEXT;
+
+class CToolTipClassFactory : public IClassFactory
+{
+protected:
+	ULONG	m_cRef;
+
+public:
+	CToolTipClassFactory();
+	~CToolTipClassFactory();
+
+	//IUnknown members
+	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)	AddRef();
+	STDMETHODIMP_(ULONG)	Release();
+
+	//IClassFactory members
+	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
+	STDMETHODIMP		LockServer(BOOL);
+
+};
+typedef CToolTipClassFactory *LPCTOOLTIPCLASSFACTORY;
+
+class CToolTip : public IQueryInfo, IPersistFile, MatroskaPropShellExten=
sion
+{
+public:=09
+	CToolTip();
+	~CToolTip();
+
+	//IUnknown members
+	STDMETHODIMP QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG) AddRef();
+	STDMETHODIMP_(ULONG) Release();
+
+	//IPersistFile methods
+	STDMETHODIMP GetClassID(CLSID *pCLSID) {ODS("CToolTip::GetClassID()"); =
return E_NOTIMPL;};
+	STDMETHODIMP Load(LPCOLESTR pOleStr, DWORD dwMode);
+	STDMETHODIMP IsDirty(void) { ODS("CToolTip::IsDirty()"); return E_NOTIM=
PL;};       =20
+	/// \param pszFileName [unique][in]
+	/// \param fRemember [in]
+  STDMETHODIMP Save(LPCOLESTR pszFileName, BOOL fRemember) { ODS("CToolT=
ip::Save()"); return E_NOTIMPL;}; =20
+	/// \param pszFileName [unique][in]
+  STDMETHODIMP SaveCompleted(LPCOLESTR pszFileName) { ODS("CToolTip::Sav=
eCompleted()"); return E_NOTIMPL;}; =20
+	/// \param ppszFileName [out]
+  STDMETHODIMP GetCurFile(LPOLESTR *ppszFileName) { ODS("CToolTip::GetCu=
rFile()"); return E_NOTIMPL;};
+
+	//IToolTip methods
+	STDMETHODIMP GetInfoFlags(DWORD *pdwFlags);
+	STDMETHODIMP GetInfoTip(DWORD dwFlags, LPWSTR *ppwszTip);
+
+	DWORD m_dwMode;=09
+
+	wchar_t m_szFileName[MAX_MATROSKA_PATH];
+
+protected:
+	ULONG        m_cRef;
+	LPDATAOBJECT m_pDataObj;
+};
+typedef CToolTip *LPCTOOLTIP;
+
+class CThumbnailClassFactory : public IClassFactory
+{
+protected:
+	ULONG	m_cRef;
+
+public:
+	CThumbnailClassFactory();
+	~CThumbnailClassFactory();
+
+	//IUnknown members
+	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)	AddRef();
+	STDMETHODIMP_(ULONG)	Release();
+
+	//IClassFactory members
+	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
+	STDMETHODIMP		LockServer(BOOL);
+
+};
+typedef CThumbnailClassFactory *LPCTHUMBNAILCLASSFACTORY;
+
+class CThumbnail : public IExtractImage, IPersistFile, IRunnableTask, Ma=
troskaPropShellExtension
+{
+public:=09
+	CThumbnail();
+	~CThumbnail();
+
+	//IUnknown members
+	STDMETHODIMP QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG) AddRef();
+	STDMETHODIMP_(ULONG) Release();
+
+	//IPersistFile methods
+	STDMETHODIMP GetClassID(CLSID *pCLSID) {ODS("CThumbnail::GetClassID()")=
; return E_NOTIMPL;};
+	STDMETHODIMP Load(LPCOLESTR pOleStr, DWORD dwMode);
+	STDMETHODIMP IsDirty(void) { ODS("CThumbnail::IsDirty()"); return E_NOT=
IMPL;};       =20
+	/// \param pszFileName [unique][in]
+	/// \param fRemember [in]
+  STDMETHODIMP Save(LPCOLESTR pszFileName, BOOL fRemember) { ODS("CThumb=
nail::Save()"); return E_NOTIMPL;}; =20
+	/// \param pszFileName [unique][in]
+  STDMETHODIMP SaveCompleted(LPCOLESTR pszFileName) { ODS("CThumbnail::S=
aveCompleted()"); return E_NOTIMPL;}; =20
+	/// \param ppszFileName [out]
+  STDMETHODIMP GetCurFile(LPOLESTR *ppszFileName) { ODS("CThumbnail::Get=
CurFile()"); return E_NOTIMPL;};
+
+	//IRunnableTask methods
+	STDMETHODIMP Run() { ODS("CThumbnail::Run()"); return E_NOTIMPL;};     =
  =20
+	STDMETHODIMP Kill(BOOL fWait) { ODS("CThumbnail::Kill()"); return E_NOT=
IMPL;};
+	STDMETHODIMP Suspend() { ODS("CThumbnail::Suspend()"); return E_NOTIMPL=
;};       =20
+	STDMETHODIMP Resume() { ODS("CThumbnail::Resume()"); return E_NOTIMPL;}=
;
+	STDMETHODIMP_(ULONG) IsRunning() { ODS("CThumbnail::IsRunning()"); retu=
rn m_ThreadState;};
+
+	//IExtractImage methods
+	/// \param pszPathBuffer [size_is][out]
+	/// \param cch [in]=20
+	/// \param pdwPriority [unique][out][in]
+	/// \param prgSize [in]=20
+	/// \param dwRecClrDepth [in]
+	/// \param pdwFlags [in]
+  STDMETHODIMP GetLocation(LPWSTR pszPathBuffer, DWORD cch, DWORD *pdwPr=
iority, const SIZE *prgSize, DWORD dwRecClrDepth, DWORD *pdwFlags);
+  /// \param phBmpThumbnail  [out]
+  STDMETHODIMP Extract(HBITMAP *phBmpThumbnail);
+
+	DWORD m_dwMode;
+	wchar_t m_szFileName[MAX_MATROSKA_PATH];
+
+protected:
+	ULONG m_ThreadState;
+	DWORD m_height;
+	DWORD m_width;
+	DWORD m_color_depth;
+
+	ULONG        m_cRef;
+	LPDATAOBJECT m_pDataObj;
+};
+typedef CThumbnail *LPCTHUMBNAIL;
+
+class CColumnProviderClassFactory : public IClassFactory
+{
+protected:
+	ULONG	m_cRef;
+
+public:
+	CColumnProviderClassFactory();
+	~CColumnProviderClassFactory();
+
+	//IUnknown members
+	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)	AddRef();
+	STDMETHODIMP_(ULONG)	Release();
+
+	//IClassFactory members
+	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
+	STDMETHODIMP		LockServer(BOOL);
+
+};
+typedef CColumnProviderClassFactory *LPCCOLUMNPROVIDERCLASSFACTORY;
+
+class CColumnProvider : public IColumnProvider, MatroskaPropShellExtensi=
on
+{
+public:
+	CColumnProvider();
+	~CColumnProvider();
+
+	//IUnknown members
+	STDMETHODIMP            QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)    AddRef();
+	STDMETHODIMP_(ULONG)    Release();
+
+  // IColumnProvider methods
+  STDMETHODIMP Initialize(LPCSHCOLUMNINIT psci);
+  STDMETHODIMP GetColumnInfo(DWORD dwIndex, SHCOLUMNINFO *psci);
+  STDMETHODIMP GetItemData(LPCSHCOLUMNID pscid, LPCSHCOLUMNDATA pscd, VA=
RIANT *pvarData);
+
+protected:=09
+	/// Filename
+	TCHAR m_szFile[MAX_MATROSKA_PATH];
+	wchar_t m_szFolder[MAX_PATH];
+=09
+	ULONG        m_cRef;
+	LPDATAOBJECT m_pDataObj;
+};
+typedef CColumnProvider *LPCCOLUMNPROVIDER;
+
+class CContextMenuClassFactory : public IClassFactory
+{
+protected:
+	ULONG	m_cRef;
+
+public:
+	CContextMenuClassFactory();
+	~CContextMenuClassFactory();
+
+	//IUnknown members
+	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)	AddRef();
+	STDMETHODIMP_(ULONG)	Release();
+
+	//IClassFactory members
+	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
+	STDMETHODIMP		LockServer(BOOL);
+
+};
+typedef CContextMenuClassFactory *LPCCONTEXTMENUCLASSFACTORY;
+
+struct MatroskaAttachmentMenuItem {
+	HMENU hmAttachmentItem;
+	UINT uPosition;
+	UINT uIDNewItem;
+	MatroskaAttachmentItem *attachmentSource;
+};
+
+struct MatroskaAttachmentMenuClickItem {
+	UINT uItemID;
+	MatroskaAttachmentItem *attachmentSource;
+};
+
+class CContextMenu : public IShellExtInit, IContextMenu3, MatroskaPropSh=
ellExtension
+{
+public:
+	CContextMenu();
+	~CContextMenu();
+
+	//IUnknown members
+	STDMETHODIMP            QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)    AddRef();
+	STDMETHODIMP_(ULONG)    Release();
+
+	//IShellExtInit methods
+	STDMETHODIMP            Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJEC=
T pDataObj, HKEY hKeyID);
+
+	// IContextMenu methods
+	STDMETHODIMP GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwRese=
rved, LPSTR pszName, UINT cchMax);
+	STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
+	STDMETHODIMP QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFi=
rst, UINT idCmdLast, UINT uFlags);
+
+	// IContextMenu2 methods
+	STDMETHODIMP HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+	// IContextMenu3 methods
+	STDMETHODIMP HandleMenuMsg2(UINT uMsg, WPARAM wParam, LPARAM lParam, LR=
ESULT *plResult);
+
+	// Msg handler
+	STDMETHODIMP MenuMessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam=
, LRESULT *plResult);
+protected:
+	//Internal Functions
+	void AddChapterItem_Menu(HMENU parent, MatroskaChapterEntry *chapter, s=
td::wstring chapterTitle, UINT &idCmd, UINT &indexMenu);
+	std::vector<UINT> m_TrackCmdID;
+	std::vector<MatroskaAttachmentMenuClickItem> m_AttachmentCmdID;
+=09
+	std::vector<MatroskaAttachmentMenuItem *> m_Attachments;
+	/// Filename
+	TCHAR m_szFile[MAX_MATROSKA_PATH];
+=09
+	ULONG        m_cRef;
+	LPDATAOBJECT m_pDataObj;
+
+};
+typedef CContextMenu *LPCCONTEXTMENU;
+
+class CShellIconClassFactory : public IClassFactory
+{
+protected:
+	ULONG	m_cRef;
+
+public:
+	CShellIconClassFactory();
+	~CShellIconClassFactory();
+
+	//IUnknown members
+	STDMETHODIMP			QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)	AddRef();
+	STDMETHODIMP_(ULONG)	Release();
+
+	//IClassFactory members
+	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
+	STDMETHODIMP		LockServer(BOOL);
+
+};
+typedef CShellIconClassFactory *LPCSHELLICONCLASSFACTORY;
+
+class CShellIcon : public IPersistFile, IExtractIcon, MatroskaPropShellE=
xtension
+{
+public:
+	CShellIcon();
+	~CShellIcon();
+
+	//IUnknown members
+	STDMETHODIMP            QueryInterface(REFIID, LPVOID *);
+	STDMETHODIMP_(ULONG)    AddRef();
+	STDMETHODIMP_(ULONG)    Release();
+
+	//IPersistFile methods
+	STDMETHODIMP GetClassID(CLSID *pCLSID) {ODS("CShellIcon::GetClassID()")=
; return E_NOTIMPL;};
+	STDMETHODIMP Load(LPCOLESTR pOleStr, DWORD dwMode);
+	STDMETHODIMP IsDirty(void) { ODS("CShellIcon::IsDirty()"); return E_NOT=
IMPL;};       =20
+	/// \param pszFileName [unique][in]
+	/// \param fRemember [in]
+  STDMETHODIMP Save(LPCOLESTR pszFileName, BOOL fRemember) { ODS("CShell=
Icon::Save()"); return E_NOTIMPL;}; =20
+	/// \param pszFileName [unique][in]
+  STDMETHODIMP SaveCompleted(LPCOLESTR pszFileName) { ODS("CShellIcon::S=
aveCompleted()"); return E_NOTIMPL;}; =20
+	/// \param ppszFileName [out]
+  STDMETHODIMP GetCurFile(LPOLESTR *ppszFileName) { ODS("CShellIcon::Get=
CurFile()"); return E_NOTIMPL;};
+
+	// IExtractIcon methods =20
+	STDMETHODIMP GetIconLocation(UINT uFlags, LPTSTR szIconFile, UINT cchMa=
x, int* piIndex, UINT* pwFlags);
+  STDMETHODIMP Extract(LPCTSTR pszFile, UINT nIconIndex, HICON* phiconLa=
rge, HICON* phiconSmall, UINT nIconSize);
+
+protected:
+	DWORD m_dwMode;
+	wchar_t m_szFileName[MAX_MATROSKA_PATH];
+
+
+	ULONG        m_cRef;
+	LPDATAOBJECT m_pDataObj;
+};
+typedef CShellIcon *LPCSHELLICON;
+
+#ifdef USE_MUXER
+enum MatroskaSimpleMuxerModes
+{
+	MatroskaMux_DShow,
+	MatroskaMux_mkvmerge
+};
+///This is a simple class to mux files into Matroska via DShow, mkvmerge
+class MatroskaSimpleMuxer
+{
+public:
+	MatroskaSimpleMuxer(enum MatroskaSimpleMuxerModes type =3D MatroskaMux_=
DShow);
+	~MatroskaSimpleMuxer();
+	HRESULT AddInputFile(JString &inputFilename);
+	HRESULT MuxToMatroska();
+
+protected:
+	HRESULT MuxViaDShow();
+	HRESULT MuxViaMkvmerge();
+
+	enum MatroskaSimpleMuxerModes muxerType;
+	std::vector<JString> inputFilenames;
+	JString outputFilename;
+};
+#endif // USE_MUXER
+
+#endif // _MATROSKAPROP_H


Property changes on: trunk/MatroskaUtils/ShellExtension/MatroskaProp.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.h	2007-=
02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.h	2007-=
02-17 10:55:54 UTC (rev 1277)
@@ -1,43 +1,43 @@
-/*
- *  Matroska Shell Extension
- *
- *  MatroskaProp.h
- *
- *  Copyright (C) Jory Stone - June 2003
- *
- *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file MatroskaProp.h
-		\version \$Id: MatroskaProp.h,v 1.22 2004/03/07 08:08:49 jcsston Exp $
-    \brief This is the meat code of the Matroska Shell Extension
-		\author Jory Stone     <jcsston @ toughguy.net>
-
-*/
-
-#ifndef _MATROSKA_PROP_SHELL_EXTENSION_H
-#define _MATROSKA_PROP_SHELL_EXTENSION_H
-
-#include <windows.h>
-
-class MatroskaPropShellExtension {
-public:
-	MatroskaPropShellExtension();
-	virtual ~MatroskaPropShellExtension();
-};
-
-#endif // _MATROSKA_PROP_SHELL_EXTENSION_H
+/*
+ *  Matroska Shell Extension
+ *
+ *  MatroskaProp.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *
+ *  The Matroska Shell Extension is free software; you can redistribute =
it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Matroska Shell Extension is distributed in the hope that it will=
 be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with the Matroska Shell Extension; see the file COPYING.  If n=
ot, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file MatroskaProp.h
+		\version \$Id: MatroskaProp.h,v 1.22 2004/03/07 08:08:49 jcsston Exp $
+    \brief This is the meat code of the Matroska Shell Extension
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+#ifndef _MATROSKA_PROP_SHELL_EXTENSION_H
+#define _MATROSKA_PROP_SHELL_EXTENSION_H
+
+#include <windows.h>
+
+class MatroskaPropShellExtension {
+public:
+	MatroskaPropShellExtension();
+	virtual ~MatroskaPropShellExtension();
+};
+
+#endif // _MATROSKA_PROP_SHELL_EXTENSION_H


Property changes on: trunk/MatroskaUtils/ShellExtension/MatroskaPropShell=
Extension.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/TagReader.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/TagReader.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/TagReader.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,49 +1,49 @@
-/*
- *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
- *
- *  TagReader.h
- *
- *  Copyright (C) Jory Stone - 2003
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file TagReader.h
-		\version \$Id: TagReader.h,v 1.2 2003/10/07 09:03:13 jcsston Exp $
-    \brief Tag Importer Base class
-		\author Jory Stone     <jcsston @ toughguy.net>
-
-*/
-
-#ifndef _TAG_READER_H_
-#define _TAG_READER_H_
-
-#include "JString.h"
-#include <string>
-#include <string.h>
-#include "MatroskaTagData.h"
-
-using namespace MatroskaUtilsNamespace;
-
-class TagReader {
-public:
-	virtual void ReadFile(const JString &filename) =3D 0;
-	virtual bool HasTags() =3D 0;
-	virtual void ImportTags(MatroskaTagInfo *target) =3D 0;
-};
-
-#endif // _TAG_READER_H_
+/*
+ *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
+ *
+ *  TagReader.h
+ *
+ *  Copyright (C) Jory Stone - 2003
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file TagReader.h
+		\version \$Id: TagReader.h,v 1.2 2003/10/07 09:03:13 jcsston Exp $
+    \brief Tag Importer Base class
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+#ifndef _TAG_READER_H_
+#define _TAG_READER_H_
+
+#include "JString.h"
+#include <string>
+#include <string.h>
+#include "MatroskaTagData.h"
+
+using namespace MatroskaUtilsNamespace;
+
+class TagReader {
+public:
+	virtual void ReadFile(const JString &filename) =3D 0;
+	virtual bool HasTags() =3D 0;
+	virtual void ImportTags(MatroskaTagInfo *target) =3D 0;
+};
+
+#endif // _TAG_READER_H_


Property changes on: trunk/MatroskaUtils/TagReader.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/ZipArchive.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/ZipArchive.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/ZipArchive.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,177 +1,177 @@
-/*
- *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
- *
- *  ZipArchive.h
- *
- *  Copyright (C) Jory Stone - 2003
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file ZipArchive.h
-		\version \$Id: ZipArchive.h,v 1.3 2003/10/08 03:30:42 jcsston Exp $
-    \brief A lightwight Zip Archive class
-		\author Jory Stone     <jcsston @ toughguy.net>
-*/
-
-#ifndef _ZIP_ARCHIVE_H_
-#define _ZIP_ARCHIVE_H_
-
-#include <windows.h>
-#include <stdio.h>
-#include <vector>
-#include <string>
-#include <string.h>
-#include <time.h>
-#include "zlib.h"
-
-#pragma pack(push, 1)
-struct zip_local_file_header
-{
-	DWORD header_sig;// 4bytes (0x04034b50)
-	WORD version;// needed to extract 	2 bytes
-	WORD general_flags;// purpose bit flag 	2 bytes
-	WORD compression_method;// 	2 bytes
-	WORD last_mod_file_time;// 	2 bytes
-	WORD last_mod_file_date;// 	2 bytes
-	DWORD crc32;//-32 	4 bytes
-	DWORD compressed_size; // 	4 bytes
-	DWORD uncompressed_size; // 	4 bytes
-	WORD file_name_length; // 	2 bytes
-	WORD extra_field_length; // 	2 bytes
-	//char *file_name; // 	(variable size)
-	//char *extra_field; // 	(variable size)
-};
-
-// Only used if bit 3 is set on zip_local_file_header::general_flags
-struct zip_data_footer
-{
-	DWORD crc32;//-32  	4 bytes
-	DWORD compressed_size; // 	4 bytes
-	DWORD uncompressed_size; // 	4 bytes
-};
-
-struct zip_central_dir_header
-{
-	DWORD header_sig; //  	4 bytes (0x02014b50)
-	WORD version_by; // 	2 bytes
-	WORD version_needed; // to extract 	2 bytes
-	WORD general_flags;// purpose bit flag 	2 bytes
-	WORD compression_method;// 	2 bytes
-	WORD last_mod_file_time;// 	2 bytes
-	WORD last_mod_file_date;// 	2 bytes
-	DWORD crc32;//-32 	4 bytes
-	DWORD compressed_size; // 	4 bytes
-	DWORD uncompressed_size; // 	4 bytes
-	WORD file_name_length; // 	2 bytes
-	WORD extra_field_length; // 	2 bytes
-	WORD comment_length; // 	2 bytes
-	WORD disk_number_start; // 	2 bytes
-	WORD internal_file_attributes; // 	2 bytes
-	DWORD external_file_attributes; // 	4 bytes
-	DWORD relative_offset_of_local_header; // 	4 bytes
-	//char *file_name; // 	(variable size)
-	//char *extra_field; // 	(variable size)
-	//char *file_comment; // 	(variable size)
-};
-
-/*Digital signature:
-header signature	4 bytes (0x05054b50)
-size of data	2 bytes
-signature data 	(variable size)*/
-
-struct zip_central_dir_footer
-{
-	DWORD header_sig; //  	4 bytes (0x06054b50)
-	WORD disk_number; //number of this disk 	2 bytes
-	WORD disk_number_dir; // 	2 bytes
-	WORD entry_count_disk_total; //WORD total number of entries in the cent=
ral directory on this disk 	2 bytes
-	WORD entry_count_total; //; the central directory 	2 bytes
-	DWORD size_central_dir;// 	4 bytes
-	DWORD dir_offset; //ectory_with_respect_to_the_starting disk number;// =
	4 bytes
-	WORD file_comment_length;// 	2 bytes
-	//char *file_comment;// 	(variable size)
-};
-#pragma pack(pop)
-
-class CZip_local_file_header {
-public:
-	CZip_local_file_header() {
-		memset(&data, 0, sizeof(zip_local_file_header));=20
-		data.header_sig =3D 0x04034b50;
-	};
-
-	zip_local_file_header data;
-	std::string file_name;
-	std::string extra_field;
-};
-
-
-class CZip_central_dir_header {
-public:
-	CZip_central_dir_header() {=20
-		memset(&data, 0, sizeof(zip_central_dir_header));
-		data.header_sig =3D 0x02014b50;
-		data.version_by =3D 20;
-	};
-	void Write(FILE *targetFile) {
-		fwrite(&data, 1, sizeof(zip_central_dir_header), targetFile);
-	=09
-		fwrite(file_name.c_str(), 1, file_name.length(), targetFile);
-		fwrite(extra_field.c_str(), 1, extra_field.length(), targetFile);
-		fwrite(file_comment.c_str(), 1, file_comment.length(), targetFile);
-	}
-
-	zip_central_dir_header data;
-	std::string file_name;
-	std::string extra_field;
-	std::string file_comment;
-};
-
-class ZipArchiveWriter {
-public:
-	ZipArchiveWriter(const wchar_t *outputArchive);
-	ZipArchiveWriter(const std::string &outputArchive);
-	~ZipArchiveWriter();
-
-	bool IsOk();
-	void SetComment(const std::string &newComment) { m_ZipComment =3D newCo=
mment; };=09
-	void AddFile(const wchar_t *sourceFilename);
-	void AddFile(const std::string &sourceFilename);
-	void AddFile(const std::string &newFile, const unsigned char *data, uns=
igned long size);
-	void Close();
-
-protected:
-	bool m_bClosed;
-	FILE *m_OutputFile;
-	std::string m_OutputFilename;
-	std::string m_ZipComment;
-	struct DosDate {
-		WORD nMonthDay : 5,
-		nMonth : 4,
-		nYear : 7;
-	};
-	struct DosTime {
-		WORD nSecond : 5,
-		nMinute : 6,
-		nHour : 5;
-	};
-
-	std::vector<CZip_central_dir_header> m_FileList;
-};
-
-#endif // _ZIP_ARCHIVE_H_
+/*
+ *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
+ *
+ *  ZipArchive.h
+ *
+ *  Copyright (C) Jory Stone - 2003
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file ZipArchive.h
+		\version \$Id: ZipArchive.h,v 1.3 2003/10/08 03:30:42 jcsston Exp $
+    \brief A lightwight Zip Archive class
+		\author Jory Stone     <jcsston @ toughguy.net>
+*/
+
+#ifndef _ZIP_ARCHIVE_H_
+#define _ZIP_ARCHIVE_H_
+
+#include <windows.h>
+#include <stdio.h>
+#include <vector>
+#include <string>
+#include <string.h>
+#include <time.h>
+#include "zlib.h"
+
+#pragma pack(push, 1)
+struct zip_local_file_header
+{
+	DWORD header_sig;// 4bytes (0x04034b50)
+	WORD version;// needed to extract 	2 bytes
+	WORD general_flags;// purpose bit flag 	2 bytes
+	WORD compression_method;// 	2 bytes
+	WORD last_mod_file_time;// 	2 bytes
+	WORD last_mod_file_date;// 	2 bytes
+	DWORD crc32;//-32 	4 bytes
+	DWORD compressed_size; // 	4 bytes
+	DWORD uncompressed_size; // 	4 bytes
+	WORD file_name_length; // 	2 bytes
+	WORD extra_field_length; // 	2 bytes
+	//char *file_name; // 	(variable size)
+	//char *extra_field; // 	(variable size)
+};
+
+// Only used if bit 3 is set on zip_local_file_header::general_flags
+struct zip_data_footer
+{
+	DWORD crc32;//-32  	4 bytes
+	DWORD compressed_size; // 	4 bytes
+	DWORD uncompressed_size; // 	4 bytes
+};
+
+struct zip_central_dir_header
+{
+	DWORD header_sig; //  	4 bytes (0x02014b50)
+	WORD version_by; // 	2 bytes
+	WORD version_needed; // to extract 	2 bytes
+	WORD general_flags;// purpose bit flag 	2 bytes
+	WORD compression_method;// 	2 bytes
+	WORD last_mod_file_time;// 	2 bytes
+	WORD last_mod_file_date;// 	2 bytes
+	DWORD crc32;//-32 	4 bytes
+	DWORD compressed_size; // 	4 bytes
+	DWORD uncompressed_size; // 	4 bytes
+	WORD file_name_length; // 	2 bytes
+	WORD extra_field_length; // 	2 bytes
+	WORD comment_length; // 	2 bytes
+	WORD disk_number_start; // 	2 bytes
+	WORD internal_file_attributes; // 	2 bytes
+	DWORD external_file_attributes; // 	4 bytes
+	DWORD relative_offset_of_local_header; // 	4 bytes
+	//char *file_name; // 	(variable size)
+	//char *extra_field; // 	(variable size)
+	//char *file_comment; // 	(variable size)
+};
+
+/*Digital signature:
+header signature	4 bytes (0x05054b50)
+size of data	2 bytes
+signature data 	(variable size)*/
+
+struct zip_central_dir_footer
+{
+	DWORD header_sig; //  	4 bytes (0x06054b50)
+	WORD disk_number; //number of this disk 	2 bytes
+	WORD disk_number_dir; // 	2 bytes
+	WORD entry_count_disk_total; //WORD total number of entries in the cent=
ral directory on this disk 	2 bytes
+	WORD entry_count_total; //; the central directory 	2 bytes
+	DWORD size_central_dir;// 	4 bytes
+	DWORD dir_offset; //ectory_with_respect_to_the_starting disk number;// =
	4 bytes
+	WORD file_comment_length;// 	2 bytes
+	//char *file_comment;// 	(variable size)
+};
+#pragma pack(pop)
+
+class CZip_local_file_header {
+public:
+	CZip_local_file_header() {
+		memset(&data, 0, sizeof(zip_local_file_header));=20
+		data.header_sig =3D 0x04034b50;
+	};
+
+	zip_local_file_header data;
+	std::string file_name;
+	std::string extra_field;
+};
+
+
+class CZip_central_dir_header {
+public:
+	CZip_central_dir_header() {=20
+		memset(&data, 0, sizeof(zip_central_dir_header));
+		data.header_sig =3D 0x02014b50;
+		data.version_by =3D 20;
+	};
+	void Write(FILE *targetFile) {
+		fwrite(&data, 1, sizeof(zip_central_dir_header), targetFile);
+	=09
+		fwrite(file_name.c_str(), 1, file_name.length(), targetFile);
+		fwrite(extra_field.c_str(), 1, extra_field.length(), targetFile);
+		fwrite(file_comment.c_str(), 1, file_comment.length(), targetFile);
+	}
+
+	zip_central_dir_header data;
+	std::string file_name;
+	std::string extra_field;
+	std::string file_comment;
+};
+
+class ZipArchiveWriter {
+public:
+	ZipArchiveWriter(const wchar_t *outputArchive);
+	ZipArchiveWriter(const std::string &outputArchive);
+	~ZipArchiveWriter();
+
+	bool IsOk();
+	void SetComment(const std::string &newComment) { m_ZipComment =3D newCo=
mment; };=09
+	void AddFile(const wchar_t *sourceFilename);
+	void AddFile(const std::string &sourceFilename);
+	void AddFile(const std::string &newFile, const unsigned char *data, uns=
igned long size);
+	void Close();
+
+protected:
+	bool m_bClosed;
+	FILE *m_OutputFile;
+	std::string m_OutputFilename;
+	std::string m_ZipComment;
+	struct DosDate {
+		WORD nMonthDay : 5,
+		nMonth : 4,
+		nYear : 7;
+	};
+	struct DosTime {
+		WORD nSecond : 5,
+		nMinute : 6,
+		nHour : 5;
+	};
+
+	std::vector<CZip_central_dir_header> m_FileList;
+};
+
+#endif // _ZIP_ARCHIVE_H_


Property changes on: trunk/MatroskaUtils/ZipArchive.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/mdump.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/mdump.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/mdump.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,105 +1,105 @@
-/*
- *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
- *
- *  mdump.h
- *
- *  Copyright (C) Jory Stone - 2003
- *
- *	Based from sample code from http://www.eptacom.net/pubblicazioni/pub_=
eng/except.html
- *
- *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
- *
- */
-
-/*!
-    \file mdump.h
-		\version \$Id: mdump.h,v 1.11 2004/03/08 07:56:51 jcsston Exp $
-    \brief Crash Catcher
-		\author Jory Stone     <jcsston @ toughguy.net>
-*/
-
-#ifndef _MDUMP_H_
-#define _MDUMP_H_
-
-#include <stdio.h>
-#include <windows.h>
-#include <TCHAR.h>
-#include <assert.h>
-#include <Shlwapi.h>
-#include <string>
-#include <vector>
-#include <string.h>
-#include "resource.h"
-#include "ZipArchive.h"
-
-#if _MSC_VER < 1300
-#define DECLSPEC_DEPRECATED
-// VC6: change this path to your Platform SDK headers
-#include "M:\\dev7\\vs\\devtools\\common\\win32sdk\\include\\dbghelp.h"	=
		// must be XP version of file
-#else
-// VC7: ships with updated headers
-#include "dbghelp.h"
-#endif
-
-// based on dbghelp.h
-typedef BOOL (WINAPI *MINIDUMPWRITEDUMP)(HANDLE hProcess, DWORD dwPid, H=
ANDLE hFile, MINIDUMP_TYPE DumpType,
-									CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
-									CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
-									CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam
-									);
-
-struct CrashInfo {
-	std::basic_string<TCHAR> title;
-	std::basic_string<TCHAR> report;
-	std::basic_string<TCHAR> user_text;
-	std::basic_string<TCHAR> filename;
-};
-
-#ifdef USING_MAPPING_FILE=09
-struct MappingFileEntry {
-	DWORD functionAddress;
-	std::string functionName;
-};
-#endif
-
-class CrashCatcher
-{
-public:
-	CrashCatcher(const TCHAR *szAppName);
-	~CrashCatcher();
-
-protected:
-	static LONG WINAPI TopLevelFilter(struct _EXCEPTION_POINTERS *pExceptio=
nInfo);
-	static std::basic_string<TCHAR> ProcessExceptionRecord(EXCEPTION_RECORD=
 *pExceptionRecord);=09
-
-	static std::basic_string<TCHAR> DumpRegisters(CONTEXT *pContext);
-	static std::basic_string<TCHAR> StackDump(DWORD EBP, DWORD EIP);	=09
-	static LPCTSTR GetAddressInfo(const BYTE* caller, HINSTANCE hInstance);
-#ifdef USING_MAPPING_FILE=09
-	static void LoadMapping(std::vector<MappingFileEntry> &targetMap);
-	static std::basic_string<TCHAR> LookupMapping(std::vector<MappingFileEn=
try> &sourceMap, void *address);
-#endif
-	static std::basic_string<TCHAR> GetSystemInfomation();
-	static LPCTSTR GetDllVersion(LPCTSTR lpszDllName);
-=09
-	static BOOL CALLBACK CrashDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,=
LPARAM lParam);
-
-	// A 'scratch' string buffer for rendering strings
-	static TCHAR szScratchPad[256];
-	static const TCHAR *m_szAppName;=09
-	LPTOP_LEVEL_EXCEPTION_FILTER m_prevFilter;
-};
-
-#endif // _MDUMP_H_
+/*
+ *  Part of The TCMP Matroska CDL, and Matroska Shell Extension
+ *
+ *  mdump.h
+ *
+ *  Copyright (C) Jory Stone - 2003
+ *
+ *	Based from sample code from http://www.eptacom.net/pubblicazioni/pub_=
eng/except.html
+ *
+ *  The TCMP Matroska CDL is free software; you can redistribute it and/=
or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The TCMP Matroska CDL is distributed in the hope that it will be use=
ful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with The TCMP Matroska CDL; see the file COPYING.  If not, wri=
te to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA=
.
+ *
+ */
+
+/*!
+    \file mdump.h
+		\version \$Id: mdump.h,v 1.11 2004/03/08 07:56:51 jcsston Exp $
+    \brief Crash Catcher
+		\author Jory Stone     <jcsston @ toughguy.net>
+*/
+
+#ifndef _MDUMP_H_
+#define _MDUMP_H_
+
+#include <stdio.h>
+#include <windows.h>
+#include <TCHAR.h>
+#include <assert.h>
+#include <Shlwapi.h>
+#include <string>
+#include <vector>
+#include <string.h>
+#include "resource.h"
+#include "ZipArchive.h"
+
+#if _MSC_VER < 1300
+#define DECLSPEC_DEPRECATED
+// VC6: change this path to your Platform SDK headers
+#include "M:\\dev7\\vs\\devtools\\common\\win32sdk\\include\\dbghelp.h"	=
		// must be XP version of file
+#else
+// VC7: ships with updated headers
+#include "dbghelp.h"
+#endif
+
+// based on dbghelp.h
+typedef BOOL (WINAPI *MINIDUMPWRITEDUMP)(HANDLE hProcess, DWORD dwPid, H=
ANDLE hFile, MINIDUMP_TYPE DumpType,
+									CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
+									CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
+									CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam
+									);
+
+struct CrashInfo {
+	std::basic_string<TCHAR> title;
+	std::basic_string<TCHAR> report;
+	std::basic_string<TCHAR> user_text;
+	std::basic_string<TCHAR> filename;
+};
+
+#ifdef USING_MAPPING_FILE=09
+struct MappingFileEntry {
+	DWORD functionAddress;
+	std::string functionName;
+};
+#endif
+
+class CrashCatcher
+{
+public:
+	CrashCatcher(const TCHAR *szAppName);
+	~CrashCatcher();
+
+protected:
+	static LONG WINAPI TopLevelFilter(struct _EXCEPTION_POINTERS *pExceptio=
nInfo);
+	static std::basic_string<TCHAR> ProcessExceptionRecord(EXCEPTION_RECORD=
 *pExceptionRecord);=09
+
+	static std::basic_string<TCHAR> DumpRegisters(CONTEXT *pContext);
+	static std::basic_string<TCHAR> StackDump(DWORD EBP, DWORD EIP);	=09
+	static LPCTSTR GetAddressInfo(const BYTE* caller, HINSTANCE hInstance);
+#ifdef USING_MAPPING_FILE=09
+	static void LoadMapping(std::vector<MappingFileEntry> &targetMap);
+	static std::basic_string<TCHAR> LookupMapping(std::vector<MappingFileEn=
try> &sourceMap, void *address);
+#endif
+	static std::basic_string<TCHAR> GetSystemInfomation();
+	static LPCTSTR GetDllVersion(LPCTSTR lpszDllName);
+=09
+	static BOOL CALLBACK CrashDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,=
LPARAM lParam);
+
+	// A 'scratch' string buffer for rendering strings
+	static TCHAR szScratchPad[256];
+	static const TCHAR *m_szAppName;=09
+	LPTOP_LEVEL_EXCEPTION_FILTER m_prevFilter;
+};
+
+#endif // _MDUMP_H_


Property changes on: trunk/MatroskaUtils/mdump.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/MatroskaUtils/resource.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/MatroskaUtils/resource.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/MatroskaUtils/resource.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,240 +1,240 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by MatroskaCDL.rc
-//
-#define RESOURCE_VERSION_MAJOR 2
-#define RESOURCE_VERSION_MINOR 8
-#define IDD_CFGDIALOG                   101
-#define IDD_TREEDIALOG                  102
-#define IDD_DIALOG1                     104
-#define IDD_DIALOG2                     105
-#define IDD_DIALOG_ABOUT                105
-#define IDD_PROPPAGE                    106
-#define IDB_BITMAP1                     106
-#define IDD_TAG_TAB                     107
-#define IDD_TAG_SIMPLE_TAB              108
-#define IDB_BITMAP_LOGO                 110
-#define IDD_DIALOG_ADDTAG               115
-#define IDD_DIALOG_DISPLAY_SIZE         117
-#define IDD_DIALOG_DISPLAY_TEXT         118
-#define IDI_ICON_WRENCH                 120
-#define IDI_ICON_MKV1                   122
-#define IDD_DIALOG_SHELL_OPTIONS        125
-#define IDD_PROPPAGE_ATTACHMENT         126
-#define IDI_ICON_MKV_BLUE               130
-#define IDR_MENU_CLIPBOARD              131
-#define IDI_ICON_MONKEY                 133
-#define IDD_DIALOG_PROGRESS             135
-#define IDD_DIALOG_MUXER                136
-#define IDD_DIALOG_ICONS                137
-#define IDR_PNG_MATROSKA_CDL            140
-#define IDR_PNG_MATROSKA_INFO           142
-#define IDD_DIALOG_SELECT_LANGUAGE      144
-#define IDI_ICON_MKV6                   146
-#define IDI_ICON_MKV_DOLL_4             147
-#define IDD_DIALOG_CRASH                148
-#define IDI_ICON_MKV_DOLL_5             148
-#define IDI_ICON_AUDIO                  149
-#define IDI_ICON_SUBTITLE               150
-#define IDI_ICON_VIDEO                  151
-#define IDI_ICON_COW                    152
-#define IDD_DIALOG_ADD_SIMPLE_TAG       154
-#define IDD_DIALOG_BITRATE              155
-#define IDD_DIALOG_ADD_UID              156
-#define IDD_PROPPAGE_CHAPTER            157
-#define IDR_MP31                        158
-#define IDI_ICON1                       159
-#define IDI_ICON_SETUP                  159
-#define IDC_EDIT_TITLE                  1001
-#define IDC_LIST_TAGS                   1003
-#define IDC_BUTTON_SAVE                 1004
-#define IDC_EDIT_SELECTED_TAG_TEXT      1005
-#define IDC_EDIT_SELECTED_TAG_TYPE      1006
-#define IDC_LIST_TRACKS                 1009
-#define IDC_STATIC_TRACK_UID            1010
-#define IDC_STATIC_TRACK_NUMBER         1011
-#define IDC_STATIC_TRACK_TYPE           1012
-#define IDC_STATIC_TRACK_INFO           1013
-#define IDC_COMBO_TAG_TYPE              1016
-#define IDC_CHECK_DAR                   1017
-#define IDC_CHECK_TAG_TAB               1018
-#define IDC_COMBO1                      1019
-#define IDC_CHECK_TAG_TAB_SIMPLE        1019
-#define IDC_COMBO_TAG_SIMPLE_TRACKS     1019
-#define IDC_COMBO_PROP_CHANGE           1019
-#define IDC_COMBO_LANGUAGE_SELECTION    1019
-#define IDC_COMBO_CONFIG_LANGUAGE       1019
-#define IDC_COMBO_TAG_NAME              1019
-#define IDC_COMBO_TAG_FIELD             1020
-#define IDC_EDIT1                       1021
-#define IDC_EDIT_TAG_TITLE              1021
-#define IDC_EDIT_CACHE_LIMIT            1021
-#define IDC_EDIT_CRASH_REPORT           1021
-#define IDC_EDIT_TAG_VALUE              1021
-#define IDC_EDIT_BITRATE_DISPLAY        1021
-#define IDC_EDIT_ADD_UID                1021
-#define IDC_EDIT_TAG_ALBUM              1022
-#define IDC_EDIT_TAG_ARTIST             1023
-#define IDC_COMBO_TAG_TRACKS            1024
-#define IDC_STATIC_TAG_NAME             1025
-#define IDC_EDIT_TAG_YEAR               1025
-#define IDC_BUTTON_ADDTAG               1026
-#define IDC_EDIT_TAG_BPM                1026
-#define IDC_LIST_ADDTAG                 1027
-#define IDC_EDIT_TAG_TRACKNO            1027
-#define IDC_BUTTON_DELETETAG            1027
-#define IDC_BUTTON_ADDTAG_CANCEL        1028
-#define IDC_BUTTON_ADDTAG_OK            1029
-#define IDC_STATIC_TAGADD_INFO          1030
-#define IDC_STATIC_ABOUT                1031
-#define IDC_BUTTON_PROP_ABOUT           1033
-#define IDC_BUTTON_TAGS_RELOAD          1035
-#define IDC_STATIC_ATTACHMENTS_LIST     1037
-#define IDC_BUTTON_VIEW_ATTACHMENT      1038
-#define IDC_STATIC_ATTACHMENT_INFO      1039
-#define IDC_COMBO_ATTACHMENT            1040
-#define IDC_STATIC_ATTACHMENT_FRAME     1041
-#define IDC_BUTTON_CHANGE_DISPLAY_SIZE  1042
-#define IDC_BUTTON_PROP_CHANGE          1042
-#define IDC_BUTTON_LOAD_ATTACHMENTS     1043
-#define IDC_EDIT_HEIGHT                 1044
-#define IDC_EDIT_WIDTH                  1045
-#define IDC_BUTTON_DISPLAY_SIZE_OK      1046
-#define IDC_BUTTON_DISPLAY_SIZE_CANCEL  1047
-#define IDC_RADIO_BASIC_INFOMATION      1048
-#define IDC_RADIO_ADVANCED_INFO         1049
-#define IDC_LIST_INFOMATION             1050
-#define IDC_EDIT_ATTACHED_TEXT          1051
-#define IDC_CHECK_ENABLE_TOOLTIPS       1052
-#define IDC_CHECK_ENABLE_THUMBNAILS     1053
-#define IDC_LIST_THUMBNAIL_ORDER        1058
-#define IDC_SPIN_THUMBNAIL_ORDER        1061
-#define IDC_COMBO_THUMBNAIL_RESIZE      1062
-#define IDC_CHECK_DISPLAY_INFO          1065
-#define IDC_CHECK_DISPLAY_TAG           1066
-#define IDC_BUTTON_CONFIG               1066
-#define IDC_CHECK_DISPLAY_ATTACHMENTS   1067
-#define IDC_LIST_ATTACHMENT             1067
-#define IDC_PROGRESS_BAR                1069
-#define IDC_BUTTON_ABORT                1070
-#define IDC_STATIC_PROGRESS             1071
-#define IDC_CHECK_USE_SHORT_TOOLTIPS    1072
-#define IDC_SPIN_FRAMETIME              1074
-#define IDC_EDIT_FRAMETIME              1075
-#define IDC_SPIN_DISPLAY_HEIGHT         1076
-#define IDC_EDIT_THUMBNAIL_TIMEOUT      1076
-#define IDC_SPIN_DISPLAY_WIDTH          1077
-#define IDC_SPIN_FRAMETIME2             1077
-#define IDC_PROGRESS_MUXING             1078
-#define IDC_STATIC_MUXING               1079
-#define IDC_BUTTON_CANCEL_MUXING        1080
-#define IDC_RADIO_NO_ICON               1081
-#define IDC_RADIO_MKV_JORY              1082
-#define IDC_RADIO_MONKEY                1083
-#define IDC_RADIO_MKV_BLUE              1084
-#define IDC_BUTTON_SELECT_ICON          1085
-#define IDC_CHECK_ENABLE_CONTEXT_MENU   1086
-#define IDC_CHECK_ENABLE_TASK_THUMBNAILS 1087
-#define IDC_CONFIG_OK                   1088
-#define IDC_CONFIG_CANCEL               1089
-#define IDC_REG_FILENAME                1090
-#define IDC_TAG_DATETIMEPICKER_TIME     1091
-#define IDC_STATIC_TAG_FOUND            1092
-#define IDC_TAG_DATETIMEPICKER_DATE     1093
-#define IDC_CHECK_ENABLE_DSHOW_FALLBACK 1095
-#define IDC_CHECK_ENABLE_IMEDIADET_DSHOW_FALLBACK 1096
-#define IDC_CHECK_ENABLE_COLUMN         1097
-#define IDC_EDIT_ATTACHMENT             1098
-#define IDC_SAVE_ATTACHMENT             1099
-#define IDC_COMBO_TAG_GENRE             1104
-#define IDC_EDIT_TAG_RATING             1106
-#define IDC_EDIT_TAG_COMMENT            1107
-#define IDC_SPIN_TAG_RATING             1108
-#define IDC_SPIN_TAG_BPM                1109
-#define IDC_BUTTON_SIMPLE_TAG_SAVE      1110
-#define IDC_BUTTON_EXPORT_XML           1111
-#define IDC_STATIC_ABOUT_IMAGE          1112
-#define IDC_BUTTON_LANGUAGE_OK          1114
-#define IDC_BUTTON_LANGUAGE_CANCEL      1115
-#define IDC_BUTTON_CHOOSE_ICON          1116
-#define IDC_SPIN_CACHE_LIMIT            1117
-#define IDC_BUTTON_TAG_IMPORT           1118
-#define IDC_LIST_VIEW_TRACKS            1119
-#define IDC_BUTTON_SAVE_DUMP            1120
-#define IDC_STATIC_CRASH_TITLE          1121
-#define IDC_EDIT_CRASH_USER_TEXT        1123
-#define IDC_BUTTON_CRASH_ME             1124
-#define IDC_STATIC_ADD_TAG_1            1125
-#define IDC_STATIC_DISPLAY_SIZE_1       1126
-#define IDC_STATIC_DISPLAY_SIZE_2       1127
-#define IDC_STATIC_DISPLAY_SIZE_3       1128
-#define IDC_STATIC_LANGUAGE_1           1129
-#define IDC_STATIC_CONFIG_1             1130
-#define IDC_STATIC_CONFIG_2             1131
-#define IDC_STATIC_CONFIG_4             1132
-#define IDC_STATIC_CONFIG_3             1133
-#define IDC_STATIC_CONFIG_10            1134
-#define IDC_STATIC_CONFIG_6             1135
-#define IDC_STATIC_CONFIG_7             1136
-#define IDC_STATIC_CONFIG_9             1137
-#define IDC_STATIC_CONFIG_8             1138
-#define IDC_STATIC_CONFIG_5             1139
-#define IDC_STATIC_CONFIG_11            1140
-#define IDC_BUTTON_ABOUT_OK             1141
-#define IDC_BUTTON_CONFIG_SET_TRANSLATION 1142
-#define IDC_STATIC_PROGRESS_TITLE       1143
-#define IDC_STATIC_ATTACHMENT_BORDER    1144
-#define IDC_STATIC_ATTACHMENT_PREVIEW   1145
-#define IDC_STATIC_INFO_BORDER          1146
-#define IDC_STATIC_INFO_TRACK_BORDER    1147
-#define IDC_STATIC_INFO_TRACKS          1148
-#define IDC_STATIC_TAG_1                1149
-#define IDC_STATIC_TAG_2                1150
-#define IDC_STATIC_TAG_3                1151
-#define IDC_STATIC_TAG_4                1152
-#define IDC_STATIC_TAG_FRAME_BORDER     1153
-#define IDC_STATIC_TAG_5                1154
-#define IDC_LIST_VIEW_ICON_CHOICE       1155
-#define IDC_STATIC_TRANSLATION_BY       1156
-#define IDC_CHECK_ENABLE_CRASH_CATCHER  1158
-#define IDC_BUTTON_ADD_SIMPLE_TAG_OK    1159
-#define IDC_BUTTON_ADD_SIMPLE_TAG_CANCEL 1160
-#define IDC_STATIC_NAME                 1161
-#define IDC_STATIC_VALUE                1162
-#define IDC_BUTTON_BITRATE              1163
-#define IDC_BUTTON_BITRATE_OK           1165
-#define IDC_STATIC_BITRATE_USAGE        1166
-#define IDC_PROGRESS_BAR_BITRATE        1167
-#define IDC_CHECK_AUTO_RELOAD_TAGS      1168
-#define IDC_TAB_CONFIG                  1169
-#define IDC_LIST_TAG_ASSIGNED_UID       1170
-#define IDC_BUTTON_TAG_UID_ADD          1171
-#define IDC_BUTTON_TAG_UID_DELETE       1172
-#define IDC_LIST_TAG_ENTRIES            1173
-#define IDC_BUTTON_TAG_ENTRY_ADD        1174
-#define IDC_STATIC_TAG_ASSIGNED_UID     1175
-#define IDC_BUTTON_TAG_ENTRY_DELETE     1176
-#define IDC_BUTTON_ADD_UID_OK           1176
-#define IDC_STATIC_TAG_ENTRIES          1177
-#define IDC_BUTTON_ADD_UID_CANCEL       1177
-#define IDC_STATIC_ADD_UID_1            1178
-#define IDC_LIST_ADD_UID                1179
-#define IDC_STATIC_CHAPTER_BORDER       1180
-#define IDC_TREE_CHAPTER                1181
-#define IDC_BUTTON1                     1182
-#define IDC_BUTTON_ABOUT_LISTEN         1182
-#define IDC_BUTTON_BITRATE_SAVE         1182
-#define IDC_BUTTON_EXPORT_CHAPTERS_XML  1182
-#define RESOURCE_VERSION_BUILD 2219
-#define IDC_MENU_COPY_CLIPBOARD         40001
-
-// Next default values for new objects
-//=20
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        160
-#define _APS_NEXT_COMMAND_VALUE         40002
-#define _APS_NEXT_CONTROL_VALUE         1183
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by MatroskaCDL.rc
+//
+#define RESOURCE_VERSION_MAJOR 2
+#define RESOURCE_VERSION_MINOR 8
+#define IDD_CFGDIALOG                   101
+#define IDD_TREEDIALOG                  102
+#define IDD_DIALOG1                     104
+#define IDD_DIALOG2                     105
+#define IDD_DIALOG_ABOUT                105
+#define IDD_PROPPAGE                    106
+#define IDB_BITMAP1                     106
+#define IDD_TAG_TAB                     107
+#define IDD_TAG_SIMPLE_TAB              108
+#define IDB_BITMAP_LOGO                 110
+#define IDD_DIALOG_ADDTAG               115
+#define IDD_DIALOG_DISPLAY_SIZE         117
+#define IDD_DIALOG_DISPLAY_TEXT         118
+#define IDI_ICON_WRENCH                 120
+#define IDI_ICON_MKV1                   122
+#define IDD_DIALOG_SHELL_OPTIONS        125
+#define IDD_PROPPAGE_ATTACHMENT         126
+#define IDI_ICON_MKV_BLUE               130
+#define IDR_MENU_CLIPBOARD              131
+#define IDI_ICON_MONKEY                 133
+#define IDD_DIALOG_PROGRESS             135
+#define IDD_DIALOG_MUXER                136
+#define IDD_DIALOG_ICONS                137
+#define IDR_PNG_MATROSKA_CDL            140
+#define IDR_PNG_MATROSKA_INFO           142
+#define IDD_DIALOG_SELECT_LANGUAGE      144
+#define IDI_ICON_MKV6                   146
+#define IDI_ICON_MKV_DOLL_4             147
+#define IDD_DIALOG_CRASH                148
+#define IDI_ICON_MKV_DOLL_5             148
+#define IDI_ICON_AUDIO                  149
+#define IDI_ICON_SUBTITLE               150
+#define IDI_ICON_VIDEO                  151
+#define IDI_ICON_COW                    152
+#define IDD_DIALOG_ADD_SIMPLE_TAG       154
+#define IDD_DIALOG_BITRATE              155
+#define IDD_DIALOG_ADD_UID              156
+#define IDD_PROPPAGE_CHAPTER            157
+#define IDR_MP31                        158
+#define IDI_ICON1                       159
+#define IDI_ICON_SETUP                  159
+#define IDC_EDIT_TITLE                  1001
+#define IDC_LIST_TAGS                   1003
+#define IDC_BUTTON_SAVE                 1004
+#define IDC_EDIT_SELECTED_TAG_TEXT      1005
+#define IDC_EDIT_SELECTED_TAG_TYPE      1006
+#define IDC_LIST_TRACKS                 1009
+#define IDC_STATIC_TRACK_UID            1010
+#define IDC_STATIC_TRACK_NUMBER         1011
+#define IDC_STATIC_TRACK_TYPE           1012
+#define IDC_STATIC_TRACK_INFO           1013
+#define IDC_COMBO_TAG_TYPE              1016
+#define IDC_CHECK_DAR                   1017
+#define IDC_CHECK_TAG_TAB               1018
+#define IDC_COMBO1                      1019
+#define IDC_CHECK_TAG_TAB_SIMPLE        1019
+#define IDC_COMBO_TAG_SIMPLE_TRACKS     1019
+#define IDC_COMBO_PROP_CHANGE           1019
+#define IDC_COMBO_LANGUAGE_SELECTION    1019
+#define IDC_COMBO_CONFIG_LANGUAGE       1019
+#define IDC_COMBO_TAG_NAME              1019
+#define IDC_COMBO_TAG_FIELD             1020
+#define IDC_EDIT1                       1021
+#define IDC_EDIT_TAG_TITLE              1021
+#define IDC_EDIT_CACHE_LIMIT            1021
+#define IDC_EDIT_CRASH_REPORT           1021
+#define IDC_EDIT_TAG_VALUE              1021
+#define IDC_EDIT_BITRATE_DISPLAY        1021
+#define IDC_EDIT_ADD_UID                1021
+#define IDC_EDIT_TAG_ALBUM              1022
+#define IDC_EDIT_TAG_ARTIST             1023
+#define IDC_COMBO_TAG_TRACKS            1024
+#define IDC_STATIC_TAG_NAME             1025
+#define IDC_EDIT_TAG_YEAR               1025
+#define IDC_BUTTON_ADDTAG               1026
+#define IDC_EDIT_TAG_BPM                1026
+#define IDC_LIST_ADDTAG                 1027
+#define IDC_EDIT_TAG_TRACKNO            1027
+#define IDC_BUTTON_DELETETAG            1027
+#define IDC_BUTTON_ADDTAG_CANCEL        1028
+#define IDC_BUTTON_ADDTAG_OK            1029
+#define IDC_STATIC_TAGADD_INFO          1030
+#define IDC_STATIC_ABOUT                1031
+#define IDC_BUTTON_PROP_ABOUT           1033
+#define IDC_BUTTON_TAGS_RELOAD          1035
+#define IDC_STATIC_ATTACHMENTS_LIST     1037
+#define IDC_BUTTON_VIEW_ATTACHMENT      1038
+#define IDC_STATIC_ATTACHMENT_INFO      1039
+#define IDC_COMBO_ATTACHMENT            1040
+#define IDC_STATIC_ATTACHMENT_FRAME     1041
+#define IDC_BUTTON_CHANGE_DISPLAY_SIZE  1042
+#define IDC_BUTTON_PROP_CHANGE          1042
+#define IDC_BUTTON_LOAD_ATTACHMENTS     1043
+#define IDC_EDIT_HEIGHT                 1044
+#define IDC_EDIT_WIDTH                  1045
+#define IDC_BUTTON_DISPLAY_SIZE_OK      1046
+#define IDC_BUTTON_DISPLAY_SIZE_CANCEL  1047
+#define IDC_RADIO_BASIC_INFOMATION      1048
+#define IDC_RADIO_ADVANCED_INFO         1049
+#define IDC_LIST_INFOMATION             1050
+#define IDC_EDIT_ATTACHED_TEXT          1051
+#define IDC_CHECK_ENABLE_TOOLTIPS       1052
+#define IDC_CHECK_ENABLE_THUMBNAILS     1053
+#define IDC_LIST_THUMBNAIL_ORDER        1058
+#define IDC_SPIN_THUMBNAIL_ORDER        1061
+#define IDC_COMBO_THUMBNAIL_RESIZE      1062
+#define IDC_CHECK_DISPLAY_INFO          1065
+#define IDC_CHECK_DISPLAY_TAG           1066
+#define IDC_BUTTON_CONFIG               1066
+#define IDC_CHECK_DISPLAY_ATTACHMENTS   1067
+#define IDC_LIST_ATTACHMENT             1067
+#define IDC_PROGRESS_BAR                1069
+#define IDC_BUTTON_ABORT                1070
+#define IDC_STATIC_PROGRESS             1071
+#define IDC_CHECK_USE_SHORT_TOOLTIPS    1072
+#define IDC_SPIN_FRAMETIME              1074
+#define IDC_EDIT_FRAMETIME              1075
+#define IDC_SPIN_DISPLAY_HEIGHT         1076
+#define IDC_EDIT_THUMBNAIL_TIMEOUT      1076
+#define IDC_SPIN_DISPLAY_WIDTH          1077
+#define IDC_SPIN_FRAMETIME2             1077
+#define IDC_PROGRESS_MUXING             1078
+#define IDC_STATIC_MUXING               1079
+#define IDC_BUTTON_CANCEL_MUXING        1080
+#define IDC_RADIO_NO_ICON               1081
+#define IDC_RADIO_MKV_JORY              1082
+#define IDC_RADIO_MONKEY                1083
+#define IDC_RADIO_MKV_BLUE              1084
+#define IDC_BUTTON_SELECT_ICON          1085
+#define IDC_CHECK_ENABLE_CONTEXT_MENU   1086
+#define IDC_CHECK_ENABLE_TASK_THUMBNAILS 1087
+#define IDC_CONFIG_OK                   1088
+#define IDC_CONFIG_CANCEL               1089
+#define IDC_REG_FILENAME                1090
+#define IDC_TAG_DATETIMEPICKER_TIME     1091
+#define IDC_STATIC_TAG_FOUND            1092
+#define IDC_TAG_DATETIMEPICKER_DATE     1093
+#define IDC_CHECK_ENABLE_DSHOW_FALLBACK 1095
+#define IDC_CHECK_ENABLE_IMEDIADET_DSHOW_FALLBACK 1096
+#define IDC_CHECK_ENABLE_COLUMN         1097
+#define IDC_EDIT_ATTACHMENT             1098
+#define IDC_SAVE_ATTACHMENT             1099
+#define IDC_COMBO_TAG_GENRE             1104
+#define IDC_EDIT_TAG_RATING             1106
+#define IDC_EDIT_TAG_COMMENT            1107
+#define IDC_SPIN_TAG_RATING             1108
+#define IDC_SPIN_TAG_BPM                1109
+#define IDC_BUTTON_SIMPLE_TAG_SAVE      1110
+#define IDC_BUTTON_EXPORT_XML           1111
+#define IDC_STATIC_ABOUT_IMAGE          1112
+#define IDC_BUTTON_LANGUAGE_OK          1114
+#define IDC_BUTTON_LANGUAGE_CANCEL      1115
+#define IDC_BUTTON_CHOOSE_ICON          1116
+#define IDC_SPIN_CACHE_LIMIT            1117
+#define IDC_BUTTON_TAG_IMPORT           1118
+#define IDC_LIST_VIEW_TRACKS            1119
+#define IDC_BUTTON_SAVE_DUMP            1120
+#define IDC_STATIC_CRASH_TITLE          1121
+#define IDC_EDIT_CRASH_USER_TEXT        1123
+#define IDC_BUTTON_CRASH_ME             1124
+#define IDC_STATIC_ADD_TAG_1            1125
+#define IDC_STATIC_DISPLAY_SIZE_1       1126
+#define IDC_STATIC_DISPLAY_SIZE_2       1127
+#define IDC_STATIC_DISPLAY_SIZE_3       1128
+#define IDC_STATIC_LANGUAGE_1           1129
+#define IDC_STATIC_CONFIG_1             1130
+#define IDC_STATIC_CONFIG_2             1131
+#define IDC_STATIC_CONFIG_4             1132
+#define IDC_STATIC_CONFIG_3             1133
+#define IDC_STATIC_CONFIG_10            1134
+#define IDC_STATIC_CONFIG_6             1135
+#define IDC_STATIC_CONFIG_7             1136
+#define IDC_STATIC_CONFIG_9             1137
+#define IDC_STATIC_CONFIG_8             1138
+#define IDC_STATIC_CONFIG_5             1139
+#define IDC_STATIC_CONFIG_11            1140
+#define IDC_BUTTON_ABOUT_OK             1141
+#define IDC_BUTTON_CONFIG_SET_TRANSLATION 1142
+#define IDC_STATIC_PROGRESS_TITLE       1143
+#define IDC_STATIC_ATTACHMENT_BORDER    1144
+#define IDC_STATIC_ATTACHMENT_PREVIEW   1145
+#define IDC_STATIC_INFO_BORDER          1146
+#define IDC_STATIC_INFO_TRACK_BORDER    1147
+#define IDC_STATIC_INFO_TRACKS          1148
+#define IDC_STATIC_TAG_1                1149
+#define IDC_STATIC_TAG_2                1150
+#define IDC_STATIC_TAG_3                1151
+#define IDC_STATIC_TAG_4                1152
+#define IDC_STATIC_TAG_FRAME_BORDER     1153
+#define IDC_STATIC_TAG_5                1154
+#define IDC_LIST_VIEW_ICON_CHOICE       1155
+#define IDC_STATIC_TRANSLATION_BY       1156
+#define IDC_CHECK_ENABLE_CRASH_CATCHER  1158
+#define IDC_BUTTON_ADD_SIMPLE_TAG_OK    1159
+#define IDC_BUTTON_ADD_SIMPLE_TAG_CANCEL 1160
+#define IDC_STATIC_NAME                 1161
+#define IDC_STATIC_VALUE                1162
+#define IDC_BUTTON_BITRATE              1163
+#define IDC_BUTTON_BITRATE_OK           1165
+#define IDC_STATIC_BITRATE_USAGE        1166
+#define IDC_PROGRESS_BAR_BITRATE        1167
+#define IDC_CHECK_AUTO_RELOAD_TAGS      1168
+#define IDC_TAB_CONFIG                  1169
+#define IDC_LIST_TAG_ASSIGNED_UID       1170
+#define IDC_BUTTON_TAG_UID_ADD          1171
+#define IDC_BUTTON_TAG_UID_DELETE       1172
+#define IDC_LIST_TAG_ENTRIES            1173
+#define IDC_BUTTON_TAG_ENTRY_ADD        1174
+#define IDC_STATIC_TAG_ASSIGNED_UID     1175
+#define IDC_BUTTON_TAG_ENTRY_DELETE     1176
+#define IDC_BUTTON_ADD_UID_OK           1176
+#define IDC_STATIC_TAG_ENTRIES          1177
+#define IDC_BUTTON_ADD_UID_CANCEL       1177
+#define IDC_STATIC_ADD_UID_1            1178
+#define IDC_LIST_ADD_UID                1179
+#define IDC_STATIC_CHAPTER_BORDER       1180
+#define IDC_TREE_CHAPTER                1181
+#define IDC_BUTTON1                     1182
+#define IDC_BUTTON_ABOUT_LISTEN         1182
+#define IDC_BUTTON_BITRATE_SAVE         1182
+#define IDC_BUTTON_EXPORT_CHAPTERS_XML  1182
+#define RESOURCE_VERSION_BUILD 2219
+#define IDC_MENU_COPY_CLIPBOARD         40001
+
+// Next default values for new objects
+//=20
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        160
+#define _APS_NEXT_COMMAND_VALUE         40002
+#define _APS_NEXT_CONTROL_VALUE         1183
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif


Property changes on: trunk/MatroskaUtils/resource.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/MatroskaUtils/tinyxml/tinystr.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/config.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/config.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/config.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,31 +1,31 @@
-//#define CONFIG_STATIC
-#define CONFIG_UNICODE
-#define CONFIG_MULTITHREAD
-#define OSX_UNIVERSAL
-
-//-----------
-// failsafes
-
-#if !defined(ARM) || defined(TARGET_SYMBIAN)
-#undef CONFIG_WMMX
-#endif
-
-#if !defined(IX86) || defined(TARGET_SYMBIAN)
-#undef CONFIG_MMX
-#endif
-
-#if !defined(CONFIG_UNICODE) && (defined(TARGET_WINCE) || defined(TARGET=
_SYMBIAN))
-#define CONFIG_UNICODE
-#endif
-
-#if defined(CONFIG_MULTITHREAD) && (defined(TARGET_SYMBIAN) || defined(T=
ARGET_PALMOS))
-#undef CONFIG_MULTITHREAD
-#endif
-
-#if defined(CONFIG_UNICODE) && (defined(TARGET_PALMOS) || defined(TARGET=
_LINUX))
-#undef CONFIG_UNICODE
-#endif
-
-#if !defined(CONFIG_STATIC) && defined(TARGET_PALMOS) && defined(IX86)
-#define CONFIG_STATIC
-#endif
+//#define CONFIG_STATIC
+#define CONFIG_UNICODE
+#define CONFIG_MULTITHREAD
+#define OSX_UNIVERSAL
+
+//-----------
+// failsafes
+
+#if !defined(ARM) || defined(TARGET_SYMBIAN)
+#undef CONFIG_WMMX
+#endif
+
+#if !defined(IX86) || defined(TARGET_SYMBIAN)
+#undef CONFIG_MMX
+#endif
+
+#if !defined(CONFIG_UNICODE) && (defined(TARGET_WINCE) || defined(TARGET=
_SYMBIAN))
+#define CONFIG_UNICODE
+#endif
+
+#if defined(CONFIG_MULTITHREAD) && (defined(TARGET_SYMBIAN) || defined(T=
ARGET_PALMOS))
+#undef CONFIG_MULTITHREAD
+#endif
+
+#if defined(CONFIG_UNICODE) && (defined(TARGET_PALMOS) || defined(TARGET=
_LINUX))
+#undef CONFIG_UNICODE
+#endif
+
+#if !defined(CONFIG_STATIC) && defined(TARGET_PALMOS) && defined(IX86)
+#define CONFIG_STATIC
+#endif


Property changes on: trunk/config.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/foo_input_matroska/DbgOut.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/foo_input_matroska/DbgOut.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/foo_input_matroska/DbgOut.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,105 +1,105 @@
-/**
-	*  Part of the foobar2000 Matroska plugin
-	*
-	*  Copyright (C) Jory Stone - 2003
-	*
-  *  This library is free software; you can redistribute it and/or
-  *  modify it under the terms of the GNU Library General Public
-  *  License as published by the Free Software Foundation; either
-  *  version 2 of the License, or (at your option) any later version.
-  *
-  *  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING=
 THE
-  *  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PU=
RPOSE.
-	*
-*/
-
-#ifndef _DBG_OUT_H_
-#define _DBG_OUT_H_
-
-#define STRICT
-#define WINDOWS_LEAN_AND_MEAN
-#include <windows.h>
-#include <windowsx.h>
-#include <tchar.h>
-
-#ifdef _DEBUG
-//#define DEBUG_OUT_PUT
-#include <tchar.h>
-#include <stdarg.h>
-#include <fstream>
-#include <string>
-#include <locale>
-namespace win32
-{
-    typedef std::basic_string< _TCHAR > string;
-    typedef std::basic_fstream< _TCHAR > fstream;
-}
-#define HPRINTF_MES_LENGTH 256
-inline void hprintf( const _TCHAR * format, ... )
-{
-    _TCHAR buff[HPRINTF_MES_LENGTH];
-    va_list vl;
-    va_start(vl, format);
-    _vsntprintf(buff, HPRINTF_MES_LENGTH, format, vl);
-    va_end(vl);
-    OutputDebugString(buff);
-    //*
-    win32::string basicstring(buff);
-    win32::fstream f("foo_input_matroska.debug.txt", std::ios::out|std::=
ios::app);
-    f << basicstring.c_str();
-	f.close();
-    //*/
-}
-#include <boost/timer.hpp>
-#define TIMER boost::timer t
-#define RETIMER t.restart()
-#define _TIMER(x) hprintf(L"%S: %f sec.\n",x,t.elapsed())
-#else
-#define TIMER __noop
-#define RETIMER __noop
-#define _TIMER(x) __noop
-#define hprintf __noop
-#endif
-
-#ifdef DEBUG_OUT_PUT
-void WINAPI DbgStringOut(const TCHAR *pFormat,...);
-#ifdef UNICODE
-void WINAPI DbgLogInfo(const CHAR *pFormat,...)
-#endif
-#define NOTE(x) DbgStringOut(x)
-#define NOTE1(x, y1) DbgStringOut(x, y1)
-#define NOTE2(x, y1, y2) DbgStringOut(x, y1, y2)
-#define NOTE3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
-#define NOTE4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
-#define NOTE5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5)
-#define NOTE6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4,=
 y5, y6)
-#define NOTE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut(=
x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#define ODS(x) DbgStringOut(x)
-#define ODS1(x, y1) DbgStringOut(x, y1)
-#define ODS2(x, y1, y2) DbgStringOut(x, y1, y2)
-#define ODS3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
-#define ODS4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
-#define ODS5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5)
-#define ODS6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4, =
y5, y6)
-#define ODS10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut(x=
, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#else
-#define NOTE(x)
-#define NOTE1(x, y1)
-#define NOTE2(x, y1, y2)
-#define NOTE3(x, y1, y2, y3)
-#define NOTE4(x, y1, y2, y3, y4)
-#define NOTE5(x, y1, y2, y3, y4, y5)
-#define NOTE6(x, y1, y2, y3, y4, y5, y6)
-#define NOTE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#define ODS(x)
-#define ODS1(x, y1)
-#define ODS2(x, y1, y2)
-#define ODS3(x, y1, y2, y3)
-#define ODS4(x, y1, y2, y3, y4)
-#define ODS5(x, y1, y2, y3, y4, y5)
-#define ODS6(x, y1, y2, y3, y4, y5, y6)
-#define ODS10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-#endif
-
-
-#endif // _DBG_OUT_H_
+/**
+	*  Part of the foobar2000 Matroska plugin
+	*
+	*  Copyright (C) Jory Stone - 2003
+	*
+  *  This library is free software; you can redistribute it and/or
+  *  modify it under the terms of the GNU Library General Public
+  *  License as published by the Free Software Foundation; either
+  *  version 2 of the License, or (at your option) any later version.
+  *
+  *  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING=
 THE
+  *  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PU=
RPOSE.
+	*
+*/
+
+#ifndef _DBG_OUT_H_
+#define _DBG_OUT_H_
+
+#define STRICT
+#define WINDOWS_LEAN_AND_MEAN
+#include <windows.h>
+#include <windowsx.h>
+#include <tchar.h>
+
+#ifdef _DEBUG
+//#define DEBUG_OUT_PUT
+#include <tchar.h>
+#include <stdarg.h>
+#include <fstream>
+#include <string>
+#include <locale>
+namespace win32
+{
+    typedef std::basic_string< _TCHAR > string;
+    typedef std::basic_fstream< _TCHAR > fstream;
+}
+#define HPRINTF_MES_LENGTH 256
+inline void hprintf( const _TCHAR * format, ... )
+{
+    _TCHAR buff[HPRINTF_MES_LENGTH];
+    va_list vl;
+    va_start(vl, format);
+    _vsntprintf(buff, HPRINTF_MES_LENGTH, format, vl);
+    va_end(vl);
+    OutputDebugString(buff);
+    //*
+    win32::string basicstring(buff);
+    win32::fstream f("foo_input_matroska.debug.txt", std::ios::out|std::=
ios::app);
+    f << basicstring.c_str();
+	f.close();
+    //*/
+}
+#include <boost/timer.hpp>
+#define TIMER boost::timer t
+#define RETIMER t.restart()
+#define _TIMER(x) hprintf(L"%S: %f sec.\n",x,t.elapsed())
+#else
+#define TIMER __noop
+#define RETIMER __noop
+#define _TIMER(x) __noop
+#define hprintf __noop
+#endif
+
+#ifdef DEBUG_OUT_PUT
+void WINAPI DbgStringOut(const TCHAR *pFormat,...);
+#ifdef UNICODE
+void WINAPI DbgLogInfo(const CHAR *pFormat,...)
+#endif
+#define NOTE(x) DbgStringOut(x)
+#define NOTE1(x, y1) DbgStringOut(x, y1)
+#define NOTE2(x, y1, y2) DbgStringOut(x, y1, y2)
+#define NOTE3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
+#define NOTE4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
+#define NOTE5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5)
+#define NOTE6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4,=
 y5, y6)
+#define NOTE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut(=
x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#define ODS(x) DbgStringOut(x)
+#define ODS1(x, y1) DbgStringOut(x, y1)
+#define ODS2(x, y1, y2) DbgStringOut(x, y1, y2)
+#define ODS3(x, y1, y2, y3) DbgStringOut(x, y1, y2, y3)
+#define ODS4(x, y1, y2, y3, y4) DbgStringOut(x, y1, y2, y3, y4)
+#define ODS5(x, y1, y2, y3, y4, y5) DbgStringOut(x, y1, y2, y3, y4, y5)
+#define ODS6(x, y1, y2, y3, y4, y5, y6) DbgStringOut(x, y1, y2, y3, y4, =
y5, y6)
+#define ODS10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10) DbgStringOut(x=
, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#else
+#define NOTE(x)
+#define NOTE1(x, y1)
+#define NOTE2(x, y1, y2)
+#define NOTE3(x, y1, y2, y3)
+#define NOTE4(x, y1, y2, y3, y4)
+#define NOTE5(x, y1, y2, y3, y4, y5)
+#define NOTE6(x, y1, y2, y3, y4, y5, y6)
+#define NOTE10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#define ODS(x)
+#define ODS1(x, y1)
+#define ODS2(x, y1, y2)
+#define ODS3(x, y1, y2, y3)
+#define ODS4(x, y1, y2, y3, y4)
+#define ODS5(x, y1, y2, y3, y4, y5)
+#define ODS6(x, y1, y2, y3, y4, y5, y6)
+#define ODS10(x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
+#endif
+
+
+#endif // _DBG_OUT_H_


Property changes on: trunk/foo_input_matroska/DbgOut.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/foo_input_matroska/Foobar2000ReaderIOCallback.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/foo_input_matroska/Foobar2000ReaderIOCallback.h	2007-02-17 10:3=
4:40 UTC (rev 1276)
+++ trunk/foo_input_matroska/Foobar2000ReaderIOCallback.h	2007-02-17 10:5=
5:54 UTC (rev 1277)
@@ -1,91 +1,91 @@
-/*
- *  Part of the foobar2000 Matroska plugin
- *
- *  Copyright (C) Jory Stone (jcsston at toughguy net) - 2003
- *
- *  This library is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Library General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING =
THE
- *  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR=
POSE.
- *
- */
-=20
-#ifndef _FOOBAR2000_IO_CALLBACK_H_
-#define _FOOBAR2000_IO_CALLBACK_H_
-
-#include "../SDK/foobar2000.h"
-#include "ebml/IOCallback.h"
-
-using namespace LIBEBML_NAMESPACE;
-
-class Foobar2000ReaderIOCallback : public IOCallback {
-public:
-	Foobar2000ReaderIOCallback(service_ptr_t<file> & source, abort_callback=
 & p_abort)
-		: m_abort(p_abort)
-	{
-		m_Reader =3D source;
-		if (!m_Reader->can_seek()) {
-			m_NoSeekReader =3D source;
-		}
-	};
-
-	virtual ~Foobar2000ReaderIOCallback() {
-		close();
-	};
-
-	virtual uint32 read(void*Buffer, size_t Size) {
-		return m_Reader->read(Buffer, Size, m_abort);
-	};
-
-	virtual void setFilePointer(int64 Offset, seek_mode Mode=3Dseek_beginni=
ng) {
-		switch (Mode)
-		{
-			case seek_beginning:
-				m_Reader->seek(Offset, m_abort);
-				break;
-			case seek_current:
-				m_Reader->seek_ex(Offset, file::seek_from_current, m_abort);
-				break;
-			case seek_end:
-				m_Reader->seek_ex(Offset, file::seek_from_eof, m_abort);
-				break;
-			default:
-				//throw "Invalid Seek Mode!!!";
-				;
-		};
-	}
-
-	virtual size_t write(const void*Buffer, size_t Size) {
-		m_Reader->write(Buffer, Size, m_abort);
-		return Size;
-	}
-
-	virtual uint64 getFilePointer() {
-		return m_Reader->get_position(m_abort);
-	};
-
-	virtual void close() {
-	}
-
-	bool seekable() {
-		if (m_NoSeekReader =3D=3D NULL)
-			return true;
-		return false;
-	};
-
-	bool truncate()
-	{
-		m_Reader->set_eof(m_abort);
-		return true;
-	}
-
-protected:
-	service_ptr_t<file> m_Reader;
-	service_ptr_t<file> m_NoSeekReader;
-	abort_callback & m_abort;
-};
-
-#endif // _FOOBAR2000_IO_CALLBACK_H_
+/*
+ *  Part of the foobar2000 Matroska plugin
+ *
+ *  Copyright (C) Jory Stone (jcsston at toughguy net) - 2003
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING =
THE
+ *  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR=
POSE.
+ *
+ */
+=20
+#ifndef _FOOBAR2000_IO_CALLBACK_H_
+#define _FOOBAR2000_IO_CALLBACK_H_
+
+#include "../SDK/foobar2000.h"
+#include "ebml/IOCallback.h"
+
+using namespace LIBEBML_NAMESPACE;
+
+class Foobar2000ReaderIOCallback : public IOCallback {
+public:
+	Foobar2000ReaderIOCallback(service_ptr_t<file> & source, abort_callback=
 & p_abort)
+		: m_abort(p_abort)
+	{
+		m_Reader =3D source;
+		if (!m_Reader->can_seek()) {
+			m_NoSeekReader =3D source;
+		}
+	};
+
+	virtual ~Foobar2000ReaderIOCallback() {
+		close();
+	};
+
+	virtual uint32 read(void*Buffer, size_t Size) {
+		return m_Reader->read(Buffer, Size, m_abort);
+	};
+
+	virtual void setFilePointer(int64 Offset, seek_mode Mode=3Dseek_beginni=
ng) {
+		switch (Mode)
+		{
+			case seek_beginning:
+				m_Reader->seek(Offset, m_abort);
+				break;
+			case seek_current:
+				m_Reader->seek_ex(Offset, file::seek_from_current, m_abort);
+				break;
+			case seek_end:
+				m_Reader->seek_ex(Offset, file::seek_from_eof, m_abort);
+				break;
+			default:
+				//throw "Invalid Seek Mode!!!";
+				;
+		};
+	}
+
+	virtual size_t write(const void*Buffer, size_t Size) {
+		m_Reader->write(Buffer, Size, m_abort);
+		return Size;
+	}
+
+	virtual uint64 getFilePointer() {
+		return m_Reader->get_position(m_abort);
+	};
+
+	virtual void close() {
+	}
+
+	bool seekable() {
+		if (m_NoSeekReader =3D=3D NULL)
+			return true;
+		return false;
+	};
+
+	bool truncate()
+	{
+		m_Reader->set_eof(m_abort);
+		return true;
+	}
+
+protected:
+	service_ptr_t<file> m_Reader;
+	service_ptr_t<file> m_NoSeekReader;
+	abort_callback & m_abort;
+};
+
+#endif // _FOOBAR2000_IO_CALLBACK_H_


Property changes on: trunk/foo_input_matroska/Foobar2000ReaderIOCallback.=
h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/foo_input_matroska/container_matroska.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/foo_input_matroska/container_matroska.h	2007-02-17 10:34:40 UTC=
 (rev 1276)
+++ trunk/foo_input_matroska/container_matroska.h	2007-02-17 10:55:54 UTC=
 (rev 1277)
@@ -1,99 +1,99 @@
-#ifndef _CONTAINER_MATROSKA_H_
-#define _CONTAINER_MATROSKA_H_
-
-namespace foobar2000_io {
-
-    namespace matroska {
-        class attachment;
-
-        typedef pfc::list_base_const_t<attachment> attachment_list;
-    }
-   =20
-    class NOVTABLE container_matroska : public service_base {
-    public:
-        virtual void open(const char * p_path, bool p_info_only, abort_c=
allback & p_abort)=3D0;
-        virtual void open_file(service_ptr_t<file> & p_out, const filesy=
stem::t_open_mode p_mode =3D filesystem::open_mode_read) const =3D0;
-        virtual void get_display_path(pfc::string_base & p_out) const =3D=
0;
-        virtual bool is_our_path(const char * p_path) const =3D0;
-        virtual const matroska::attachment_list * get_attachment_list() =
const =3D0;
-
-    public:
-        static void g_open(service_ptr_t<container_matroska> & p_out, co=
nst char * p_path, bool p_info_only, abort_callback & p_abort) {
-            service_enum_t<container_matroska> e;
-            service_ptr_t<container_matroska> ptr;
-            while(e.next(ptr)) {
-                if (ptr->is_our_path(p_path)) {
-		            ptr->open(p_path, p_info_only, p_abort);
-                    p_out =3D ptr;
-		            return;
-                }
-            }
-	        throw exception_io_unsupported_format();
-        }
-        static bool g_is_our_path(const char * p_path) {
-            service_enum_t<container_matroska> e;
-            service_ptr_t<container_matroska> ptr;
-            while(e.next(ptr)) {
-                if (ptr->is_our_path(p_path)) {
-		            return true;
-                }
-            }
-            return false;
-        }
-
-        FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(container_matroska);
-    };
-
-    typedef service_ptr_t<container_matroska> container_matroska_ptr;
-
-    namespace matroska {
-        class attachment {
-        private:
-            container_matroska * m_owner;
-            abort_callback * m_abort;
-            pfc::string8 m_name, m_mime_type, m_description;
-            t_size m_size;
-            t_sfilesize m_position;
-
-        public:
-            attachment() : m_owner(0), m_abort(0) {};
-            attachment(const container_matroska_ptr & p_owner, abort_cal=
lback & p_abort, const char * p_name, const char * p_mime_type,
-                        const char * p_description, const t_size p_size,=
 const t_sfilesize p_position)
-                : m_name(p_name), m_mime_type(p_mime_type), m_descriptio=
n(p_description), m_size(p_size), m_position(p_position)
-            {
-                m_owner =3D p_owner.get_ptr();
-                m_abort =3D &p_abort;
-            };
-            ~attachment() {};
-            void get_name(pfc::string_base & p_out) const { p_out =3D m_=
name; };
-            void get_mime_type(pfc::string_base & p_out) const { p_out =3D=
 m_mime_type; };
-            void get_description(pfc::string_base & p_out) const { p_out=
 =3D m_description; };
-            t_size get_size() const { return m_size; };
-            t_sfilesize get_position() const { return m_position; };
-            void get(void * p_buffer, t_sfilesize p_position, t_size p_s=
ize) const {
-                service_ptr_t<file> file_ptr;
-                m_owner->open_file(file_ptr);
-                file_ptr->seek_ex(p_position, file::seek_from_beginning,=
 *m_abort);
-                file_ptr->read(p_buffer, p_size, *m_abort);
-            };
-            void get(void * p_buffer, t_size p_size =3D 0) const {
-                if (!p_size) {
-                    p_size =3D get_size();
-                }
-                get(p_buffer, get_position(), p_size);
-            };
-        };
-    };
-
-};
-
-using namespace foobar2000_io;
-
-template<typename T>
-class container_matroska_factory_t : public service_factory_t<T> {};
-
-// {32491C6C-F941-42cf-8519-EBF5061BB088}
-FOOGUIDDECL const GUID container_matroska::class_guid =3D=20
-{ 0x32491c6c, 0xf941, 0x42cf, { 0x85, 0x19, 0xeb, 0xf5, 0x6, 0x1b, 0xb0,=
 0x88 } };
-
+#ifndef _CONTAINER_MATROSKA_H_
+#define _CONTAINER_MATROSKA_H_
+
+namespace foobar2000_io {
+
+    namespace matroska {
+        class attachment;
+
+        typedef pfc::list_base_const_t<attachment> attachment_list;
+    }
+   =20
+    class NOVTABLE container_matroska : public service_base {
+    public:
+        virtual void open(const char * p_path, bool p_info_only, abort_c=
allback & p_abort)=3D0;
+        virtual void open_file(service_ptr_t<file> & p_out, const filesy=
stem::t_open_mode p_mode =3D filesystem::open_mode_read) const =3D0;
+        virtual void get_display_path(pfc::string_base & p_out) const =3D=
0;
+        virtual bool is_our_path(const char * p_path) const =3D0;
+        virtual const matroska::attachment_list * get_attachment_list() =
const =3D0;
+
+    public:
+        static void g_open(service_ptr_t<container_matroska> & p_out, co=
nst char * p_path, bool p_info_only, abort_callback & p_abort) {
+            service_enum_t<container_matroska> e;
+            service_ptr_t<container_matroska> ptr;
+            while(e.next(ptr)) {
+                if (ptr->is_our_path(p_path)) {
+		            ptr->open(p_path, p_info_only, p_abort);
+                    p_out =3D ptr;
+		            return;
+                }
+            }
+	        throw exception_io_unsupported_format();
+        }
+        static bool g_is_our_path(const char * p_path) {
+            service_enum_t<container_matroska> e;
+            service_ptr_t<container_matroska> ptr;
+            while(e.next(ptr)) {
+                if (ptr->is_our_path(p_path)) {
+		            return true;
+                }
+            }
+            return false;
+        }
+
+        FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(container_matroska);
+    };
+
+    typedef service_ptr_t<container_matroska> container_matroska_ptr;
+
+    namespace matroska {
+        class attachment {
+        private:
+            container_matroska * m_owner;
+            abort_callback * m_abort;
+            pfc::string8 m_name, m_mime_type, m_description;
+            t_size m_size;
+            t_sfilesize m_position;
+
+        public:
+            attachment() : m_owner(0), m_abort(0) {};
+            attachment(const container_matroska_ptr & p_owner, abort_cal=
lback & p_abort, const char * p_name, const char * p_mime_type,
+                        const char * p_description, const t_size p_size,=
 const t_sfilesize p_position)
+                : m_name(p_name), m_mime_type(p_mime_type), m_descriptio=
n(p_description), m_size(p_size), m_position(p_position)
+            {
+                m_owner =3D p_owner.get_ptr();
+                m_abort =3D &p_abort;
+            };
+            ~attachment() {};
+            void get_name(pfc::string_base & p_out) const { p_out =3D m_=
name; };
+            void get_mime_type(pfc::string_base & p_out) const { p_out =3D=
 m_mime_type; };
+            void get_description(pfc::string_base & p_out) const { p_out=
 =3D m_description; };
+            t_size get_size() const { return m_size; };
+            t_sfilesize get_position() const { return m_position; };
+            void get(void * p_buffer, t_sfilesize p_position, t_size p_s=
ize) const {
+                service_ptr_t<file> file_ptr;
+                m_owner->open_file(file_ptr);
+                file_ptr->seek_ex(p_position, file::seek_from_beginning,=
 *m_abort);
+                file_ptr->read(p_buffer, p_size, *m_abort);
+            };
+            void get(void * p_buffer, t_size p_size =3D 0) const {
+                if (!p_size) {
+                    p_size =3D get_size();
+                }
+                get(p_buffer, get_position(), p_size);
+            };
+        };
+    };
+
+};
+
+using namespace foobar2000_io;
+
+template<typename T>
+class container_matroska_factory_t : public service_factory_t<T> {};
+
+// {32491C6C-F941-42cf-8519-EBF5061BB088}
+FOOGUIDDECL const GUID container_matroska::class_guid =3D=20
+{ 0x32491c6c, 0xf941, 0x42cf, { 0x85, 0x19, 0xeb, 0xf5, 0x6, 0x1b, 0xb0,=
 0x88 } };
+
 #endif // _CONTAINER_MATROSKA_H_
\ No newline at end of file


Property changes on: trunk/foo_input_matroska/container_matroska.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/foo_input_matroska/container_matroska_impl.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/foo_input_matroska/container_matroska_impl.h	2007-02-17 10:34:4=
0 UTC (rev 1276)
+++ trunk/foo_input_matroska/container_matroska_impl.h	2007-02-17 10:55:5=
4 UTC (rev 1277)
@@ -1,45 +1,45 @@
-#ifndef _CONTAINER_MATROSKA_IMPL_H_
-#define _CONTAINER_MATROSKA_IMPL_H_
-
-#include "matroska_parser.h"
-#include "container_matroska.h"
-
-typedef boost::shared_ptr<MatroskaAudioParser> matroska_parser_ptr;
-
-class container_matroska_impl : public container_matroska
-{
-private:
-    typedef pfc::list_t<matroska::attachment> attachment_list_impl;
-
-    abort_callback * m_abort;
-    pfc::string8 m_path;
-    attachment_list_impl m_attachment_list;
-
-    void cleanup() {
-        m_path.reset();
-        m_attachment_list.remove_all();
-    };
-
-protected:
-    container_matroska_impl() {
-    };
-    ~container_matroska_impl() {
-        cleanup();
-    };
-
-public:
-    virtual void open(const char * p_path, bool p_info_only, abort_callb=
ack & p_abort);
-    virtual void open_file(service_ptr_t<file> & p_out, const filesystem=
::t_open_mode p_mode =3D filesystem::open_mode_read) const;
-    virtual void get_display_path(pfc::string_base & p_out) const;
-    virtual bool is_our_path(const char * p_path) const {
-        if (stricmp_utf8(pfc::string_extension(p_path), "mka") !=3D 0 &&=
 stricmp_utf8(pfc::string_extension(p_path), "mkv") !=3D 0) {
-            return false;
-        }
-        return true;
-    }
-    virtual const matroska::attachment_list * get_attachment_list() cons=
t;
-};
-
-static container_matroska_factory_t<container_matroska_impl> g_container=
_matroska_impl_factory;
-
+#ifndef _CONTAINER_MATROSKA_IMPL_H_
+#define _CONTAINER_MATROSKA_IMPL_H_
+
+#include "matroska_parser.h"
+#include "container_matroska.h"
+
+typedef boost::shared_ptr<MatroskaAudioParser> matroska_parser_ptr;
+
+class container_matroska_impl : public container_matroska
+{
+private:
+    typedef pfc::list_t<matroska::attachment> attachment_list_impl;
+
+    abort_callback * m_abort;
+    pfc::string8 m_path;
+    attachment_list_impl m_attachment_list;
+
+    void cleanup() {
+        m_path.reset();
+        m_attachment_list.remove_all();
+    };
+
+protected:
+    container_matroska_impl() {
+    };
+    ~container_matroska_impl() {
+        cleanup();
+    };
+
+public:
+    virtual void open(const char * p_path, bool p_info_only, abort_callb=
ack & p_abort);
+    virtual void open_file(service_ptr_t<file> & p_out, const filesystem=
::t_open_mode p_mode =3D filesystem::open_mode_read) const;
+    virtual void get_display_path(pfc::string_base & p_out) const;
+    virtual bool is_our_path(const char * p_path) const {
+        if (stricmp_utf8(pfc::string_extension(p_path), "mka") !=3D 0 &&=
 stricmp_utf8(pfc::string_extension(p_path), "mkv") !=3D 0) {
+            return false;
+        }
+        return true;
+    }
+    virtual const matroska::attachment_list * get_attachment_list() cons=
t;
+};
+
+static container_matroska_factory_t<container_matroska_impl> g_container=
_matroska_impl_factory;
+
 #endif // _CONTAINER_MATROSKA_IMPL_H_
\ No newline at end of file


Property changes on: trunk/foo_input_matroska/container_matroska_impl.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/foo_input_matroska/filesystem_matroska.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/foo_input_matroska/filesystem_matroska.h	2007-02-17 10:34:40 UT=
C (rev 1276)
+++ trunk/foo_input_matroska/filesystem_matroska.h	2007-02-17 10:55:54 UT=
C (rev 1277)
@@ -1,90 +1,90 @@
-#ifndef _FOO_INPUT_MATROSKA_FILESYSTEM_MATROSKA_H_
-#define _FOO_INPUT_MATROSKA_FILESYSTEM_MATROSKA_H_
-
-#include "../SDK/foobar2000.h"
-#include "container_matroska.h"
-
-class NOVTABLE filesystem_matroska : public filesystem {
-public:
-	virtual bool get_canonical_path(const char * p_path,pfc::string_base & =
p_out);
-	virtual bool is_our_path(const char * p_path);
-	virtual bool get_display_path(const char * p_path,pfc::string_base & p_=
out);
-
-	virtual void open(service_ptr_t<file> & p_out,const char * p_path, t_op=
en_mode p_mode,abort_callback & p_abort);
-    virtual void remove(const char * p_path,abort_callback & p_abort);
-    virtual void move(const char * p_src,const char * p_dst,abort_callba=
ck & p_abort);
-	//! Queries whether a file at specified path belonging to this filesyst=
em is a remove object or not.
-	virtual bool is_remote(const char * p_src);
-
-	//! Retrieves stats of a file at specified path.
-	virtual void get_stats(const char * p_path,t_filestats & p_stats,bool &=
 p_is_writeable,abort_callback & p_abort);
-=09
-	virtual bool relative_path_create(const char * file_path,const char * p=
laylist_path,pfc::string_base & out) {return 0;}
-	virtual bool relative_path_parse(const char * relative_path,const char =
* playlist_path,pfc::string_base & out) {return 0;}
-
-	//! Creates a directory.
-	virtual void create_directory(const char * p_path,abort_callback & p_ab=
ort);
-
-	virtual void list_directory(const char * p_path,directory_callback & p_=
out,abort_callback & p_abort);
-
-	//! Hint; returns whether this filesystem supports mime types.
-	virtual bool supports_content_types();
-
-private:
-    inline bool get_source_file_path(const char * p_path, pfc::string_ba=
se & p_out)
-    {
-        pfc::string8 path, file;
-        if (archive_impl::g_parse_unpack_path(p_path, path, file)) {
-            path << "|" << file;
-        } else {
-            path =3D p_path;
-        }
-        path.remove_chars(0, 11);
-        path.truncate(path.find_last('|'));
-        pfc::string8 ext(pfc::string_extension(path).get_ptr());
-        if (filesystem::g_is_recognized_path(path)) {
-            p_out =3D path;
-            return true;
-        }
-        return false;
-    }
-    inline bool get_attachment_file_name(const char * p_path, pfc::strin=
g_base & p_out)
-    {
-        pfc::string8 path, file;
-        if (archive_impl::g_parse_unpack_path(p_path, path, file)) {
-            path << "|" << file;
-        } else {
-            path =3D p_path;
-        }
-        path.remove_chars(0, 11);
-        if (path.find_last('|') !=3D infinite) {
-            path.remove_chars(0, path.find_last('|')+1);
-        } else {
-            path.remove_chars(0, path.find_last('\\')+1);
-        }
-        if (path.find_first('\\') =3D=3D 0) {
-            path.remove_chars(0, 1);
-        }
-        if (path.length() !=3D 0) {
-            p_out =3D path;
-            return true;
-        }
-        return false;
-    }
-
-public:
-    static void g_make_matroska_path(pfc::string_base & path, const char=
 * file, const char * name)
-    {
-	    path =3D "matroska://";
-	    path +=3D file;
-	    path +=3D "|";
-	    path +=3D name;
-    }
-};
-
-template<typename T>
-class filesystem_matroska_factory_t : public service_factory_single_t<T>=
 {};
-
-static filesystem_matroska_factory_t<filesystem_matroska> g_filesystem_m=
atroska_factory;
-
-#endif//_FOO_INPUT_MATROSKA_FILESYSTEM_MATROSKA_H_
+#ifndef _FOO_INPUT_MATROSKA_FILESYSTEM_MATROSKA_H_
+#define _FOO_INPUT_MATROSKA_FILESYSTEM_MATROSKA_H_
+
+#include "../SDK/foobar2000.h"
+#include "container_matroska.h"
+
+class NOVTABLE filesystem_matroska : public filesystem {
+public:
+	virtual bool get_canonical_path(const char * p_path,pfc::string_base & =
p_out);
+	virtual bool is_our_path(const char * p_path);
+	virtual bool get_display_path(const char * p_path,pfc::string_base & p_=
out);
+
+	virtual void open(service_ptr_t<file> & p_out,const char * p_path, t_op=
en_mode p_mode,abort_callback & p_abort);
+    virtual void remove(const char * p_path,abort_callback & p_abort);
+    virtual void move(const char * p_src,const char * p_dst,abort_callba=
ck & p_abort);
+	//! Queries whether a file at specified path belonging to this filesyst=
em is a remove object or not.
+	virtual bool is_remote(const char * p_src);
+
+	//! Retrieves stats of a file at specified path.
+	virtual void get_stats(const char * p_path,t_filestats & p_stats,bool &=
 p_is_writeable,abort_callback & p_abort);
+=09
+	virtual bool relative_path_create(const char * file_path,const char * p=
laylist_path,pfc::string_base & out) {return 0;}
+	virtual bool relative_path_parse(const char * relative_path,const char =
* playlist_path,pfc::string_base & out) {return 0;}
+
+	//! Creates a directory.
+	virtual void create_directory(const char * p_path,abort_callback & p_ab=
ort);
+
+	virtual void list_directory(const char * p_path,directory_callback & p_=
out,abort_callback & p_abort);
+
+	//! Hint; returns whether this filesystem supports mime types.
+	virtual bool supports_content_types();
+
+private:
+    inline bool get_source_file_path(const char * p_path, pfc::string_ba=
se & p_out)
+    {
+        pfc::string8 path, file;
+        if (archive_impl::g_parse_unpack_path(p_path, path, file)) {
+            path << "|" << file;
+        } else {
+            path =3D p_path;
+        }
+        path.remove_chars(0, 11);
+        path.truncate(path.find_last('|'));
+        pfc::string8 ext(pfc::string_extension(path).get_ptr());
+        if (filesystem::g_is_recognized_path(path)) {
+            p_out =3D path;
+            return true;
+        }
+        return false;
+    }
+    inline bool get_attachment_file_name(const char * p_path, pfc::strin=
g_base & p_out)
+    {
+        pfc::string8 path, file;
+        if (archive_impl::g_parse_unpack_path(p_path, path, file)) {
+            path << "|" << file;
+        } else {
+            path =3D p_path;
+        }
+        path.remove_chars(0, 11);
+        if (path.find_last('|') !=3D infinite) {
+            path.remove_chars(0, path.find_last('|')+1);
+        } else {
+            path.remove_chars(0, path.find_last('\\')+1);
+        }
+        if (path.find_first('\\') =3D=3D 0) {
+            path.remove_chars(0, 1);
+        }
+        if (path.length() !=3D 0) {
+            p_out =3D path;
+            return true;
+        }
+        return false;
+    }
+
+public:
+    static void g_make_matroska_path(pfc::string_base & path, const char=
 * file, const char * name)
+    {
+	    path =3D "matroska://";
+	    path +=3D file;
+	    path +=3D "|";
+	    path +=3D name;
+    }
+};
+
+template<typename T>
+class filesystem_matroska_factory_t : public service_factory_single_t<T>=
 {};
+
+static filesystem_matroska_factory_t<filesystem_matroska> g_filesystem_m=
atroska_factory;
+
+#endif//_FOO_INPUT_MATROSKA_FILESYSTEM_MATROSKA_H_


Property changes on: trunk/foo_input_matroska/filesystem_matroska.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/foo_input_matroska/matroska_parser.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/foo_input_matroska/matroska_parser.h	2007-02-17 10:34:40 UTC (r=
ev 1276)
+++ trunk/foo_input_matroska/matroska_parser.h	2007-02-17 10:55:54 UTC (r=
ev 1277)
@@ -1,416 +1,416 @@
-/*
- *  Part of the foobar2000 Matroska plugin
- *
- *  Copyright (C) Jory Stone (jcsston at toughguy net) - 2003-2004
- *
- *  This library is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Library General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING =
THE
- *  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR=
POSE.
- *
- */
-
-/*!
-    \file matroska_parser.h
-		\version $Id$
-    \brief An audio slated Matroska Reader+Parser
-		\author Jory Stone     <jcsston @ toughguy.net>
-*/
-
-#ifndef _MATROSKA_PARSER_H_
-#define _MATROSKA_PARSER_H_
-
-#define MULTITRACK 1
-
-#include "../SDK/foobar2000.h"
-#include "../helpers/helpers.h"
-#include "../../pfc/pfc.h"
-#include "Foobar2000ReaderIOCallback.h"
-#include "DbgOut.h"
-#include <queue>
-#include <deque>
-#include <boost/shared_ptr.hpp>
-
-// libebml includes
-#include "ebml/StdIOCallback.h"
-#include "ebml/EbmlTypes.h"
-#include "ebml/EbmlHead.h"
-#include "ebml/EbmlVoid.h"
-#include "ebml/EbmlCrc32.h"
-#include "ebml/EbmlSubHead.h"
-#include "ebml/EbmlStream.h"
-#include "ebml/EbmlBinary.h"
-#include "ebml/EbmlString.h"
-#include "ebml/EbmlUnicodeString.h"
-#include "ebml/EbmlContexts.h"
-#include "ebml/EbmlVersion.h"
-
-// libmatroska includes
-#include "matroska/KaxConfig.h"
-#include "matroska/KaxBlock.h"
-#include "matroska/KaxSegment.h"
-#include "matroska/KaxContexts.h"
-#include "matroska/KaxSeekHead.h"
-#include "matroska/KaxTracks.h"
-#include "matroska/KaxInfo.h"
-#include "matroska/KaxInfoData.h"
-#include "matroska/KaxTags.h"
-#include "matroska/KaxTag.h"
-#include "matroska/KaxTagMulti.h"
-#include "matroska/KaxCluster.h"
-#include "matroska/KaxClusterData.h"
-#include "matroska/KaxTrackAudio.h"
-#include "matroska/KaxTrackVideo.h"
-#include "matroska/KaxAttachments.h"
-#include "matroska/KaxAttached.h"
-#include "matroska/KaxChapters.h"
-#include "matroska/KaxVersion.h"
-
-#define TIMECODE_SCALE  1000000
-#define MAX_UINT64 0xFFFFFFFFFFFFFFFF
-#define _DELETE(__x) if (__x) { delete __x; __x =3D NULL; }
-
-//Memory Leak Debuging define
-#ifdef _DEBUG
-#define _CRTDBG_MAP_ALLOC=20
-#include <stdlib.h>
-#include <crtdbg.h>
-#endif
-
-#ifdef _DEBUG
-   #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)
-#else
-   #define DEBUG_CLIENTBLOCK
-#endif // _DEBUG
-
-#ifdef _DEBUG
-#define new DEBUG_CLIENTBLOCK
-#endif
-
-#ifdef _DEBUG
-#endif
-
-using namespace LIBEBML_NAMESPACE;
-using namespace LIBMATROSKA_NAMESPACE;
-
-typedef std::vector<uint8> ByteArray;
-typedef boost::shared_ptr<EbmlElement> ElementPtr;
-
-class MatroskaVersion {
-public:
-    static const char * lib_ebml() { return EbmlCodeVersion.c_str(); };
-    static const char * lib_matroska() { return KaxCodeVersion.c_str(); =
};
-};
-
-class MatroskaAttachment {
-public:
-	MatroskaAttachment();
-
-	UTFstring FileName;
-	std::string MimeType;
-	UTFstring Description;
-	UTFstring SourceFilename;
-	uint64 SourceStartPos;
-	uint64 SourceDataLength;
-};
-
-class MatroskaAudioFrame {
-public:
-	MatroskaAudioFrame();
-	void Reset();
-    double get_duration() {
-        return static_cast<double>(duration / 1000000000.0);
-    }
-
-	uint64 timecode;
-	uint64 duration;
-	std::vector<ByteArray> dataBuffer;
-	/// Linked-list for laced frames
-    uint64 add_id;
-    ByteArray additional_data_buffer;
-};
-
-
-struct MatroskaMetaSeekClusterEntry {
-	uint32 clusterNo;
-	uint64 filePos;
-	uint64 timecode;
-};
-
-class MatroskaSimpleTag {
-public:
-	MatroskaSimpleTag();
-
-	UTFstring name;
-	UTFstring value;
-	uint32 defaultFlag;
-	std::string language;
-
-	bool hidden;
-	bool removalPending;
-};
-
-class MatroskaTagInfo {
-public:
-	MatroskaTagInfo();
-	void SetTagValue(const char *name, const char *value, int index =3D 0);
-	void MarkAllAsRemovalPending();
-	void RemoveMarkedTags();
-=09
-	uint64 targetTrackUID;
-	uint64 targetEditionUID;
-	uint64 targetChapterUID;
-	uint64 targetAttachmentUID;
-	uint32 targetTypeValue;
-	std::string targetType;
-
-	std::vector<MatroskaSimpleTag> tags;
-};
-
-struct MatroskaChapterDisplayInfo {
-	MatroskaChapterDisplayInfo();
-
-	UTFstring string;
-	std::string lang;
-	std::string country;
-};
-
-class MatroskaChapterInfo {
-public:
-	MatroskaChapterInfo();
-
-	uint64 chapterUID;
-	uint64 timeStart;
-	uint64 timeEnd;
-	/// Vector of all the tracks this chapter applies to
-	/// if it's empty then this chapter applies to all tracks
-	std::vector<uint64> tracks;
-	/// Vector of strings we can display for chapter
-	std::vector<MatroskaChapterDisplayInfo> display;
-	std::vector<MatroskaChapterInfo> subChapters;
-};
-
-class MatroskaEditionInfo {
-public:
-	MatroskaEditionInfo();
-
-	uint64 editionUID;
-	/// Vector of all the tracks this edition applies to
-	/// if it's empty then this edition applies to all tracks
-	std::vector<uint64> tracks;
-};
-
-class MatroskaTrackInfo {
-	public:
-		/// Initializes the class
-		MatroskaTrackInfo();
-		/// Initializes the class with a UID
-		/// \param trackUID The UID to use for the new MatroskaTrackInfo
-		//MatroskaTrackInfo(uint64 trackUID);
-		/// Destroys the class
-		//~MatroskaTrackInfo();
-
-
-		uint16 trackNumber;
-		uint64 trackUID;	=09
-		std::string codecID;
-		std::vector<BYTE> codecPrivate;
-		bool codecPrivateReady;
-	=09
-		UTFstring name;
-		std::string language;
-		double duration;
-
-        uint8 channels;=20
-        double samplesPerSec;=20
-        double samplesOutputPerSec;    =20
-        uint8 bitsPerSample;
-        uint32 avgBytesPerSec;=20
-        uint64 defaultDuration;
-};
-
-typedef boost::shared_ptr<MatroskaMetaSeekClusterEntry> cluster_entry_pt=
r;
-
-class MatroskaAudioParser {
-public:
-	MatroskaAudioParser(service_ptr_t<file> input, abort_callback & p_abort=
);
-	~MatroskaAudioParser();
-
-	/// The main header parsing function
-	/// \return 0 File parsed ok
-	/// \return 1 Failed
-	int Parse(bool bInfoOnly =3D false, bool bBreakAtClusters =3D true);
-	/// Writes the tags to the current matroska file
-	/// \param info All the tags we need to write
-	/// \return 0 Tags written A OK
-	/// \return 1 Failed to write tags
-	int WriteTags();
-	/// Set the info tags to the current tags file in memory
-	void SetTags(const file_info &info);
-
-	MatroskaTrackInfo &GetTrack(uint16 trackNo) { return m_Tracks.at(trackN=
o); };
-	uint64 GetTimecodeScale() { return m_TimecodeScale; };
-	/// Returns an adjusted duration of the file
-	double GetDuration();
-	/// Returns the track index of the first decodable track
-	int32 GetFirstAudioTrack();
-
-	double TimecodeToSeconds(uint64 code,unsigned samplerate_hint =3D 44100=
);
-	uint64 SecondsToTimecode(double seconds);
-
-	/// Set the fb2k info from the matroska file
-	/// \param info This will be filled up with tags ;)
-	bool SetFB2KInfo(file_info &info, t_uint32 p_subsong);
-
-	/// Get the foobar2000 style format string
-//	const char *GetFoobar2000Format(uint16 trackNo, bool bSetupCodecPriva=
te =3D true);
-
-	/// Set the current track to read data from
-	void SetCurrentTrack(uint32 newTrackNo);
-	/// Set the subsong to play, this adjusts all the duration/timecodes=20
-	/// reported in public functions. So only use this if you are expecting=
 that to happen
-	/// \param subsong This should be within the range of the chapters vect=
or
-	void SetSubSong(int subsong);
-
-	std::vector<MatroskaEditionInfo> &GetEditions() { return m_Editions; };
-	std::vector<MatroskaChapterInfo> &GetChapters() { return m_Chapters; };
-	std::vector<MatroskaTrackInfo> &GetTracks() { return m_Tracks; };
-	uint32 GetAudioTrackCount();
-	uint32 GetAudioTrackIndex(uint32 index);
-
-	int32 GetAvgBitrate();
-	/// Seek to a position
-	/// \param seconds The absolute position to seek to, in seconds		=09
-	/// \return Current postion offset from where it was requested
-	/// If you request to seek to 2.0 and we can only seek to 1.9
-	/// the return value would be 100 * m_TimcodeScale
-
-	bool skip_frames_until(double destination,unsigned & frames,double & la=
st_timecode_delta,unsigned hint_samplerate);
-	void flush_queue();
-	uint64 get_current_frame_timecode();
-	bool Seek(double seconds,unsigned & frames_to_skip,double & time_to_ski=
p,unsigned samplerate_hint);
-
-	/// Seek to a position
-	/// \param frame The MatroskaAudioFrame struct to store the frame=09
-	/// \return 0 If read ok=09
-	/// \return 1 If file could not be read or it not open=09
-	/// \return 2 End of track (EOT)
-	MatroskaAudioFrame * ReadSingleFrame();
-    MatroskaAudioFrame * ReadFirstFrame();
-
-	UTFstring GetSegmentFileName() { return m_SegmentFilename; }
-    typedef pfc::list_t<MatroskaAttachment> attachment_list;
-	attachment_list &GetAttachmentList() { return m_AttachmentList; }
-
-protected:
-	void Parse_MetaSeek(ElementPtr metaSeekElement, bool bInfoOnly);
-	void Parse_Chapters(KaxChapters *chaptersElement);
-	void Parse_Chapter_Atom(KaxChapterAtom *ChapterAtom);
-	void Parse_Chapter_Atom(KaxChapterAtom *ChapterAtom, std::vector<Matros=
kaChapterInfo> &p_chapters);
-	void Parse_Tags(KaxTags *tagsElement);
-	int FillQueue();
-	uint64 GetClusterTimecode(uint64 filePos);
-	cluster_entry_ptr FindCluster(uint64 timecode);
-	void CountClusters();
-	void FixChapterEndTimes();
-	// See if the edition uid is already in our vector
-	// \return true Yes, we already have this uid
-	// \return false Nope
-	bool FindEditionUID(uint64 uid);
-	// See if the chapter uid is already in our vector
-	// \return true Yes, we already have this uid
-	// \return false Nope
-	bool FindChapterUID(uint64 uid);
-	/// Adds the info tags to the current file in memory=20
-	void AddTags(file_info &info);
-=09
-	MatroskaTagInfo *FindTagWithTrackUID(uint64 trackUID);
-	MatroskaTagInfo *FindTagWithEditionUID(uint64 editionUID, uint64 trackU=
ID =3D 0);
-	MatroskaTagInfo *FindTagWithChapterUID(uint64 chapterUID, uint64 trackU=
ID =3D 0);
-	bool AreTagsIdenticalAtAllLevels(const char * name);
-	bool AreTagsIdenticalAtEditionLevel(const char * name);
-	bool AreTagsIdenticalAtChapterLevel(const char * name);
-	void MarkHiddenTags();
-
-	void SetAlbumTags(file_info &info, MatroskaTagInfo* AlbumTags, Matroska=
TagInfo* TrackTags);
-	void SetTrackTags(file_info &info, MatroskaTagInfo* TrackTags);
-	=09
-
-	Foobar2000ReaderIOCallback m_IOCallback;
-	EbmlStream m_InputStream;
-	/// The main/base/master element, should be the segment
-	ElementPtr m_ElementLevel0;
-
-	MatroskaEditionInfo *m_CurrentEdition;
-	MatroskaChapterInfo *m_CurrentChapter;
-	uint32 m_CurrentTrackNo;
-	std::vector<MatroskaTrackInfo> m_Tracks;
-	std::vector<MatroskaEditionInfo> m_Editions;
-	std::vector<MatroskaChapterInfo> m_Chapters;
-	std::vector<MatroskaTagInfo> m_Tags;
-=09
-	/// This is the queue of buffered frames to deliver
-	std::queue<MatroskaAudioFrame *> m_Queue;
-
-	/// This is the index of clusters in the file, it's used to seek in the=
 file
-	// std::vector<MatroskaMetaSeekClusterEntry> m_ClusterIndex;
-    std::vector<cluster_entry_ptr> m_ClusterIndex;
-
-    attachment_list m_AttachmentList;
-
-	uint64 m_CurrentTimecode;
-	double m_Duration;
-	uint64 m_TimecodeScale;
-	UTFstring m_WritingApp;
-	UTFstring m_MuxingApp;
-	UTFstring m_FileTitle;
-	int32 m_FileDate;
-	UTFstring m_SegmentFilename;
-
-	uint64 m_FileSize;
-	uint64 m_TagPos;
-	uint32 m_TagSize;
-	uint32 m_TagScanRange;
-
-	//pfc::alloc_fast<BYTE> m_framebuffer;
-	//mem_block_factalloc<BYTE> m_framebuffer;
-	//int UpperElementLevel;
-private:
-	// We have no need for these
-	//MatroskaAudioParser(const MatroskaAudioParser &refParser) { };
-	//MatroskaAudioParser &operator=3D(const MatroskaAudioParser &refParser=
) { return *this; };
-};
-
-typedef boost::shared_ptr<MatroskaAudioParser> matroska_parser_ptr;
-
-void PrintChapters(std::vector<MatroskaChapterInfo> &theChapters);
-
-class MatroskaSearch
-{
-private:
-	static const int SEARCH_SOURCE_SIZE =3D 1024*64;
-	static const int SEARCH_TABLE_SIZE =3D SEARCH_SOURCE_SIZE;
-	static const int SEARCH_PATTERN_SIZE =3D 3;
-    binary * source, * pattern;
-	int pos;
-    int  next[SEARCH_TABLE_SIZE], skip[SEARCH_TABLE_SIZE];
-	bool Skip();
-	bool Next();
-public:
-	MatroskaSearch(binary * p_source, binary * p_pattern)
-	{
-		ZeroMemory(next, sizeof(next));
-		ZeroMemory(skip, sizeof(skip));
-		source =3D p_source;
-		pattern =3D p_pattern;
-		Skip();
-		Next();
-	}
-	~MatroskaSearch() {};
-	int Match(unsigned int start =3D 0);
-};
-
-#endif // _MATROSKA_PARSER_H_
+/*
+ *  Part of the foobar2000 Matroska plugin
+ *
+ *  Copyright (C) Jory Stone (jcsston at toughguy net) - 2003-2004
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING =
THE
+ *  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR=
POSE.
+ *
+ */
+
+/*!
+    \file matroska_parser.h
+		\version $Id$
+    \brief An audio slated Matroska Reader+Parser
+		\author Jory Stone     <jcsston @ toughguy.net>
+*/
+
+#ifndef _MATROSKA_PARSER_H_
+#define _MATROSKA_PARSER_H_
+
+#define MULTITRACK 1
+
+#include "../SDK/foobar2000.h"
+#include "../helpers/helpers.h"
+#include "../../pfc/pfc.h"
+#include "Foobar2000ReaderIOCallback.h"
+#include "DbgOut.h"
+#include <queue>
+#include <deque>
+#include <boost/shared_ptr.hpp>
+
+// libebml includes
+#include "ebml/StdIOCallback.h"
+#include "ebml/EbmlTypes.h"
+#include "ebml/EbmlHead.h"
+#include "ebml/EbmlVoid.h"
+#include "ebml/EbmlCrc32.h"
+#include "ebml/EbmlSubHead.h"
+#include "ebml/EbmlStream.h"
+#include "ebml/EbmlBinary.h"
+#include "ebml/EbmlString.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlContexts.h"
+#include "ebml/EbmlVersion.h"
+
+// libmatroska includes
+#include "matroska/KaxConfig.h"
+#include "matroska/KaxBlock.h"
+#include "matroska/KaxSegment.h"
+#include "matroska/KaxContexts.h"
+#include "matroska/KaxSeekHead.h"
+#include "matroska/KaxTracks.h"
+#include "matroska/KaxInfo.h"
+#include "matroska/KaxInfoData.h"
+#include "matroska/KaxTags.h"
+#include "matroska/KaxTag.h"
+#include "matroska/KaxTagMulti.h"
+#include "matroska/KaxCluster.h"
+#include "matroska/KaxClusterData.h"
+#include "matroska/KaxTrackAudio.h"
+#include "matroska/KaxTrackVideo.h"
+#include "matroska/KaxAttachments.h"
+#include "matroska/KaxAttached.h"
+#include "matroska/KaxChapters.h"
+#include "matroska/KaxVersion.h"
+
+#define TIMECODE_SCALE  1000000
+#define MAX_UINT64 0xFFFFFFFFFFFFFFFF
+#define _DELETE(__x) if (__x) { delete __x; __x =3D NULL; }
+
+//Memory Leak Debuging define
+#ifdef _DEBUG
+#define _CRTDBG_MAP_ALLOC=20
+#include <stdlib.h>
+#include <crtdbg.h>
+#endif
+
+#ifdef _DEBUG
+   #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)
+#else
+   #define DEBUG_CLIENTBLOCK
+#endif // _DEBUG
+
+#ifdef _DEBUG
+#define new DEBUG_CLIENTBLOCK
+#endif
+
+#ifdef _DEBUG
+#endif
+
+using namespace LIBEBML_NAMESPACE;
+using namespace LIBMATROSKA_NAMESPACE;
+
+typedef std::vector<uint8> ByteArray;
+typedef boost::shared_ptr<EbmlElement> ElementPtr;
+
+class MatroskaVersion {
+public:
+    static const char * lib_ebml() { return EbmlCodeVersion.c_str(); };
+    static const char * lib_matroska() { return KaxCodeVersion.c_str(); =
};
+};
+
+class MatroskaAttachment {
+public:
+	MatroskaAttachment();
+
+	UTFstring FileName;
+	std::string MimeType;
+	UTFstring Description;
+	UTFstring SourceFilename;
+	uint64 SourceStartPos;
+	uint64 SourceDataLength;
+};
+
+class MatroskaAudioFrame {
+public:
+	MatroskaAudioFrame();
+	void Reset();
+    double get_duration() {
+        return static_cast<double>(duration / 1000000000.0);
+    }
+
+	uint64 timecode;
+	uint64 duration;
+	std::vector<ByteArray> dataBuffer;
+	/// Linked-list for laced frames
+    uint64 add_id;
+    ByteArray additional_data_buffer;
+};
+
+
+struct MatroskaMetaSeekClusterEntry {
+	uint32 clusterNo;
+	uint64 filePos;
+	uint64 timecode;
+};
+
+class MatroskaSimpleTag {
+public:
+	MatroskaSimpleTag();
+
+	UTFstring name;
+	UTFstring value;
+	uint32 defaultFlag;
+	std::string language;
+
+	bool hidden;
+	bool removalPending;
+};
+
+class MatroskaTagInfo {
+public:
+	MatroskaTagInfo();
+	void SetTagValue(const char *name, const char *value, int index =3D 0);
+	void MarkAllAsRemovalPending();
+	void RemoveMarkedTags();
+=09
+	uint64 targetTrackUID;
+	uint64 targetEditionUID;
+	uint64 targetChapterUID;
+	uint64 targetAttachmentUID;
+	uint32 targetTypeValue;
+	std::string targetType;
+
+	std::vector<MatroskaSimpleTag> tags;
+};
+
+struct MatroskaChapterDisplayInfo {
+	MatroskaChapterDisplayInfo();
+
+	UTFstring string;
+	std::string lang;
+	std::string country;
+};
+
+class MatroskaChapterInfo {
+public:
+	MatroskaChapterInfo();
+
+	uint64 chapterUID;
+	uint64 timeStart;
+	uint64 timeEnd;
+	/// Vector of all the tracks this chapter applies to
+	/// if it's empty then this chapter applies to all tracks
+	std::vector<uint64> tracks;
+	/// Vector of strings we can display for chapter
+	std::vector<MatroskaChapterDisplayInfo> display;
+	std::vector<MatroskaChapterInfo> subChapters;
+};
+
+class MatroskaEditionInfo {
+public:
+	MatroskaEditionInfo();
+
+	uint64 editionUID;
+	/// Vector of all the tracks this edition applies to
+	/// if it's empty then this edition applies to all tracks
+	std::vector<uint64> tracks;
+};
+
+class MatroskaTrackInfo {
+	public:
+		/// Initializes the class
+		MatroskaTrackInfo();
+		/// Initializes the class with a UID
+		/// \param trackUID The UID to use for the new MatroskaTrackInfo
+		//MatroskaTrackInfo(uint64 trackUID);
+		/// Destroys the class
+		//~MatroskaTrackInfo();
+
+
+		uint16 trackNumber;
+		uint64 trackUID;	=09
+		std::string codecID;
+		std::vector<BYTE> codecPrivate;
+		bool codecPrivateReady;
+	=09
+		UTFstring name;
+		std::string language;
+		double duration;
+
+        uint8 channels;=20
+        double samplesPerSec;=20
+        double samplesOutputPerSec;    =20
+        uint8 bitsPerSample;
+        uint32 avgBytesPerSec;=20
+        uint64 defaultDuration;
+};
+
+typedef boost::shared_ptr<MatroskaMetaSeekClusterEntry> cluster_entry_pt=
r;
+
+class MatroskaAudioParser {
+public:
+	MatroskaAudioParser(service_ptr_t<file> input, abort_callback & p_abort=
);
+	~MatroskaAudioParser();
+
+	/// The main header parsing function
+	/// \return 0 File parsed ok
+	/// \return 1 Failed
+	int Parse(bool bInfoOnly =3D false, bool bBreakAtClusters =3D true);
+	/// Writes the tags to the current matroska file
+	/// \param info All the tags we need to write
+	/// \return 0 Tags written A OK
+	/// \return 1 Failed to write tags
+	int WriteTags();
+	/// Set the info tags to the current tags file in memory
+	void SetTags(const file_info &info);
+
+	MatroskaTrackInfo &GetTrack(uint16 trackNo) { return m_Tracks.at(trackN=
o); };
+	uint64 GetTimecodeScale() { return m_TimecodeScale; };
+	/// Returns an adjusted duration of the file
+	double GetDuration();
+	/// Returns the track index of the first decodable track
+	int32 GetFirstAudioTrack();
+
+	double TimecodeToSeconds(uint64 code,unsigned samplerate_hint =3D 44100=
);
+	uint64 SecondsToTimecode(double seconds);
+
+	/// Set the fb2k info from the matroska file
+	/// \param info This will be filled up with tags ;)
+	bool SetFB2KInfo(file_info &info, t_uint32 p_subsong);
+
+	/// Get the foobar2000 style format string
+//	const char *GetFoobar2000Format(uint16 trackNo, bool bSetupCodecPriva=
te =3D true);
+
+	/// Set the current track to read data from
+	void SetCurrentTrack(uint32 newTrackNo);
+	/// Set the subsong to play, this adjusts all the duration/timecodes=20
+	/// reported in public functions. So only use this if you are expecting=
 that to happen
+	/// \param subsong This should be within the range of the chapters vect=
or
+	void SetSubSong(int subsong);
+
+	std::vector<MatroskaEditionInfo> &GetEditions() { return m_Editions; };
+	std::vector<MatroskaChapterInfo> &GetChapters() { return m_Chapters; };
+	std::vector<MatroskaTrackInfo> &GetTracks() { return m_Tracks; };
+	uint32 GetAudioTrackCount();
+	uint32 GetAudioTrackIndex(uint32 index);
+
+	int32 GetAvgBitrate();
+	/// Seek to a position
+	/// \param seconds The absolute position to seek to, in seconds		=09
+	/// \return Current postion offset from where it was requested
+	/// If you request to seek to 2.0 and we can only seek to 1.9
+	/// the return value would be 100 * m_TimcodeScale
+
+	bool skip_frames_until(double destination,unsigned & frames,double & la=
st_timecode_delta,unsigned hint_samplerate);
+	void flush_queue();
+	uint64 get_current_frame_timecode();
+	bool Seek(double seconds,unsigned & frames_to_skip,double & time_to_ski=
p,unsigned samplerate_hint);
+
+	/// Seek to a position
+	/// \param frame The MatroskaAudioFrame struct to store the frame=09
+	/// \return 0 If read ok=09
+	/// \return 1 If file could not be read or it not open=09
+	/// \return 2 End of track (EOT)
+	MatroskaAudioFrame * ReadSingleFrame();
+    MatroskaAudioFrame * ReadFirstFrame();
+
+	UTFstring GetSegmentFileName() { return m_SegmentFilename; }
+    typedef pfc::list_t<MatroskaAttachment> attachment_list;
+	attachment_list &GetAttachmentList() { return m_AttachmentList; }
+
+protected:
+	void Parse_MetaSeek(ElementPtr metaSeekElement, bool bInfoOnly);
+	void Parse_Chapters(KaxChapters *chaptersElement);
+	void Parse_Chapter_Atom(KaxChapterAtom *ChapterAtom);
+	void Parse_Chapter_Atom(KaxChapterAtom *ChapterAtom, std::vector<Matros=
kaChapterInfo> &p_chapters);
+	void Parse_Tags(KaxTags *tagsElement);
+	int FillQueue();
+	uint64 GetClusterTimecode(uint64 filePos);
+	cluster_entry_ptr FindCluster(uint64 timecode);
+	void CountClusters();
+	void FixChapterEndTimes();
+	// See if the edition uid is already in our vector
+	// \return true Yes, we already have this uid
+	// \return false Nope
+	bool FindEditionUID(uint64 uid);
+	// See if the chapter uid is already in our vector
+	// \return true Yes, we already have this uid
+	// \return false Nope
+	bool FindChapterUID(uint64 uid);
+	/// Adds the info tags to the current file in memory=20
+	void AddTags(file_info &info);
+=09
+	MatroskaTagInfo *FindTagWithTrackUID(uint64 trackUID);
+	MatroskaTagInfo *FindTagWithEditionUID(uint64 editionUID, uint64 trackU=
ID =3D 0);
+	MatroskaTagInfo *FindTagWithChapterUID(uint64 chapterUID, uint64 trackU=
ID =3D 0);
+	bool AreTagsIdenticalAtAllLevels(const char * name);
+	bool AreTagsIdenticalAtEditionLevel(const char * name);
+	bool AreTagsIdenticalAtChapterLevel(const char * name);
+	void MarkHiddenTags();
+
+	void SetAlbumTags(file_info &info, MatroskaTagInfo* AlbumTags, Matroska=
TagInfo* TrackTags);
+	void SetTrackTags(file_info &info, MatroskaTagInfo* TrackTags);
+	=09
+
+	Foobar2000ReaderIOCallback m_IOCallback;
+	EbmlStream m_InputStream;
+	/// The main/base/master element, should be the segment
+	ElementPtr m_ElementLevel0;
+
+	MatroskaEditionInfo *m_CurrentEdition;
+	MatroskaChapterInfo *m_CurrentChapter;
+	uint32 m_CurrentTrackNo;
+	std::vector<MatroskaTrackInfo> m_Tracks;
+	std::vector<MatroskaEditionInfo> m_Editions;
+	std::vector<MatroskaChapterInfo> m_Chapters;
+	std::vector<MatroskaTagInfo> m_Tags;
+=09
+	/// This is the queue of buffered frames to deliver
+	std::queue<MatroskaAudioFrame *> m_Queue;
+
+	/// This is the index of clusters in the file, it's used to seek in the=
 file
+	// std::vector<MatroskaMetaSeekClusterEntry> m_ClusterIndex;
+    std::vector<cluster_entry_ptr> m_ClusterIndex;
+
+    attachment_list m_AttachmentList;
+
+	uint64 m_CurrentTimecode;
+	double m_Duration;
+	uint64 m_TimecodeScale;
+	UTFstring m_WritingApp;
+	UTFstring m_MuxingApp;
+	UTFstring m_FileTitle;
+	int32 m_FileDate;
+	UTFstring m_SegmentFilename;
+
+	uint64 m_FileSize;
+	uint64 m_TagPos;
+	uint32 m_TagSize;
+	uint32 m_TagScanRange;
+
+	//pfc::alloc_fast<BYTE> m_framebuffer;
+	//mem_block_factalloc<BYTE> m_framebuffer;
+	//int UpperElementLevel;
+private:
+	// We have no need for these
+	//MatroskaAudioParser(const MatroskaAudioParser &refParser) { };
+	//MatroskaAudioParser &operator=3D(const MatroskaAudioParser &refParser=
) { return *this; };
+};
+
+typedef boost::shared_ptr<MatroskaAudioParser> matroska_parser_ptr;
+
+void PrintChapters(std::vector<MatroskaChapterInfo> &theChapters);
+
+class MatroskaSearch
+{
+private:
+	static const int SEARCH_SOURCE_SIZE =3D 1024*64;
+	static const int SEARCH_TABLE_SIZE =3D SEARCH_SOURCE_SIZE;
+	static const int SEARCH_PATTERN_SIZE =3D 3;
+    binary * source, * pattern;
+	int pos;
+    int  next[SEARCH_TABLE_SIZE], skip[SEARCH_TABLE_SIZE];
+	bool Skip();
+	bool Next();
+public:
+	MatroskaSearch(binary * p_source, binary * p_pattern)
+	{
+		ZeroMemory(next, sizeof(next));
+		ZeroMemory(skip, sizeof(skip));
+		source =3D p_source;
+		pattern =3D p_pattern;
+		Skip();
+		Next();
+	}
+	~MatroskaSearch() {};
+	int Match(unsigned int start =3D 0);
+};
+
+#endif // _MATROSKA_PARSER_H_


Property changes on: trunk/foo_input_matroska/matroska_parser.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/foo_input_matroska/resource.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/foo_input_matroska/resource.h	2007-02-17 10:34:40 UTC (rev 1276=
)
+++ trunk/foo_input_matroska/resource.h	2007-02-17 10:55:54 UTC (rev 1277=
)
@@ -1,23 +1,23 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by foo_input_matroska.rc
-//
-#define IDC_BUFSIZE                     1000
-#define IDC_PREBUF_START                1001
-#define IDC_PREBUF_UNDERRUN             1002
-#define IDC_STATUS_PREBUF1              1003
-#define IDC_STATUS_PREBUF2              1004
-#define IDC_PROXY_MODE                  1005
-#define IDC_PROXY_URL                   1006
-#define IDC_ICY_METADATA                1007
-
-// Next default values for new objects
-//=20
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        103
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1008
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by foo_input_matroska.rc
+//
+#define IDC_BUFSIZE                     1000
+#define IDC_PREBUF_START                1001
+#define IDC_PREBUF_UNDERRUN             1002
+#define IDC_STATUS_PREBUF1              1003
+#define IDC_STATUS_PREBUF2              1004
+#define IDC_PROXY_MODE                  1005
+#define IDC_PROXY_URL                   1006
+#define IDC_ICY_METADATA                1007
+
+// Next default values for new objects
+//=20
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        103
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1008
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif


Property changes on: trunk/foo_input_matroska/resource.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/libebml/libebml.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/libebml/libebml.proj	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/libebml/libebml.proj	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,62 +1,62 @@
-Include "*/*.proj"
-
-LIB ebml
-{
-  INCLUDE .
-
-//  OPTIMIZE_GLOBALLY .
-  FAVOR_MAX_SPEED .
-  REDUCE_SIZE .
-  FASTER_FLOAT .
- =20
-//  SOURCE src/Debug.cpp
-  SOURCE src/EbmlBinary.cpp
-  SOURCE src/EbmlContexts.cpp
-  SOURCE src/EbmlCrc32.cpp
-  SOURCE src/EbmlDate.cpp
-  SOURCE src/EbmlDummy.cpp
-  SOURCE src/EbmlElement.cpp
-  SOURCE src/EbmlFloat.cpp
-  SOURCE src/EbmlHead.cpp
-  SOURCE src/EbmlMaster.cpp
-  SOURCE src/EbmlSInteger.cpp
-  SOURCE src/EbmlStream.cpp
-  SOURCE src/EbmlString.cpp
-  SOURCE src/EbmlSubHead.cpp
-  SOURCE src/EbmlUInteger.cpp
-  SOURCE src/EbmlUnicodeString.cpp
-  SOURCE src/EbmlVersion.cpp
-  SOURCE src/EbmlVoid.cpp
-  SOURCE src/IOCallback.cpp
-  SOURCE src/MemIOCallback.cpp
-  SOURCE src/StdIOCallback.cpp
-  SOURCE(TARGET_WIN) src/platform/win32/WinIOCallback.cpp
-
-  HEADER(TARGET_WIN) src/platform/win32/WinIOCallback.h
-//  HEADER ebml/Debug.h
-  HEADER ebml/EbmlBinary.h
-  HEADER ebml/EbmlConfig.h
-  HEADER ebml/EbmlContexts.h
-  HEADER ebml/EbmlCrc32.h
-  HEADER ebml/EbmlDate.h
-  HEADER ebml/EbmlDummy.h
-  HEADER ebml/EbmlElement.h
-  HEADER ebml/EbmlEndian.h
-  HEADER ebml/EbmlFloat.h
-  HEADER ebml/EbmlHead.h
-  HEADER ebml/EbmlId.h
-  HEADER ebml/EbmlMaster.h
-  HEADER ebml/EbmlSInteger.h
-  HEADER ebml/EbmlStream.h
-  HEADER ebml/EbmlString.h
-  HEADER ebml/EbmlSubHead.h
-  HEADER ebml/EbmlTypes.h
-  HEADER ebml/EbmlUInteger.h
-  HEADER ebml/EbmlUnicodeString.h
-  HEADER ebml/EbmlVersion.h
-  HEADER ebml/EbmlVoid.h
-  HEADER ebml/IOCallback.h
-  HEADER ebml/MemIOCallback.h
-  HEADER ebml/StdIOCallback.h
-  HEADER ebml/c/libebml_t.h
-}
+Include "*/*.proj"
+
+LIB ebml
+{
+  INCLUDE .
+
+//  OPTIMIZE_GLOBALLY .
+  FAVOR_MAX_SPEED .
+  REDUCE_SIZE .
+  FASTER_FLOAT .
+ =20
+//  SOURCE src/Debug.cpp
+  SOURCE src/EbmlBinary.cpp
+  SOURCE src/EbmlContexts.cpp
+  SOURCE src/EbmlCrc32.cpp
+  SOURCE src/EbmlDate.cpp
+  SOURCE src/EbmlDummy.cpp
+  SOURCE src/EbmlElement.cpp
+  SOURCE src/EbmlFloat.cpp
+  SOURCE src/EbmlHead.cpp
+  SOURCE src/EbmlMaster.cpp
+  SOURCE src/EbmlSInteger.cpp
+  SOURCE src/EbmlStream.cpp
+  SOURCE src/EbmlString.cpp
+  SOURCE src/EbmlSubHead.cpp
+  SOURCE src/EbmlUInteger.cpp
+  SOURCE src/EbmlUnicodeString.cpp
+  SOURCE src/EbmlVersion.cpp
+  SOURCE src/EbmlVoid.cpp
+  SOURCE src/IOCallback.cpp
+  SOURCE src/MemIOCallback.cpp
+  SOURCE src/StdIOCallback.cpp
+  SOURCE(TARGET_WIN) src/platform/win32/WinIOCallback.cpp
+
+  HEADER(TARGET_WIN) src/platform/win32/WinIOCallback.h
+//  HEADER ebml/Debug.h
+  HEADER ebml/EbmlBinary.h
+  HEADER ebml/EbmlConfig.h
+  HEADER ebml/EbmlContexts.h
+  HEADER ebml/EbmlCrc32.h
+  HEADER ebml/EbmlDate.h
+  HEADER ebml/EbmlDummy.h
+  HEADER ebml/EbmlElement.h
+  HEADER ebml/EbmlEndian.h
+  HEADER ebml/EbmlFloat.h
+  HEADER ebml/EbmlHead.h
+  HEADER ebml/EbmlId.h
+  HEADER ebml/EbmlMaster.h
+  HEADER ebml/EbmlSInteger.h
+  HEADER ebml/EbmlStream.h
+  HEADER ebml/EbmlString.h
+  HEADER ebml/EbmlSubHead.h
+  HEADER ebml/EbmlTypes.h
+  HEADER ebml/EbmlUInteger.h
+  HEADER ebml/EbmlUnicodeString.h
+  HEADER ebml/EbmlVersion.h
+  HEADER ebml/EbmlVoid.h
+  HEADER ebml/IOCallback.h
+  HEADER ebml/MemIOCallback.h
+  HEADER ebml/StdIOCallback.h
+  HEADER ebml/c/libebml_t.h
+}


Property changes on: trunk/libebml/libebml.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/libmatroska/libmatroska.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/libmatroska/libmatroska.proj	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/libmatroska/libmatroska.proj	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,68 +1,68 @@
-Include "*/*.proj"
-
-LIB matroska
-{
-  INCLUDE .
-  INCLUDE ../libebml
-
-  USE ebml
-
-//  OPTIMIZE_GLOBALLY .
-  FAVOR_MAX_SPEED .
-  REDUCE_SIZE .
-  FASTER_FLOAT .
- =20
-  SOURCE src/FileKax.cpp
-  SOURCE src/KaxAttached.cpp
-  SOURCE src/KaxAttachments.cpp
-  SOURCE src/KaxBlock.cpp
-  SOURCE src/KaxBlockData.cpp
-  SOURCE src/KaxChapters.cpp
-  SOURCE src/KaxCluster.cpp
-  SOURCE src/KaxClusterData.cpp
-  SOURCE src/KaxContentEncoding.cpp
-  SOURCE src/KaxContexts.cpp
-  SOURCE src/KaxCues.cpp
-  SOURCE src/KaxCuesData.cpp
-  SOURCE src/KaxInfo.cpp
-  SOURCE src/KaxInfoData.cpp
-  SOURCE src/KaxSeekHead.cpp
-  SOURCE src/KaxSegment.cpp
-  SOURCE src/KaxTag.cpp
-  SOURCE src/KaxTagMulti.cpp
-  SOURCE src/KaxTags.cpp
-  SOURCE src/KaxTrackAudio.cpp
-  SOURCE src/KaxTrackEntryData.cpp
-  SOURCE src/KaxTrackVideo.cpp
-  SOURCE src/KaxTracks.cpp
-  SOURCE src/KaxVersion.cpp
-
-  HEADER matroska/FileKax.h
-  HEADER matroska/KaxAttached.h
-  HEADER matroska/KaxAttachments.h
-  HEADER matroska/KaxBlock.h
-  HEADER matroska/KaxBlockData.h
-  HEADER matroska/KaxChapters.h
-  HEADER matroska/KaxCluster.h
-  HEADER matroska/KaxClusterData.h
-  HEADER matroska/KaxConfig.h
-  HEADER matroska/KaxContentEncoding.h
-  HEADER matroska/KaxContexts.h
-  HEADER matroska/KaxCues.h
-  HEADER matroska/KaxCuesData.h
-  HEADER matroska/KaxInfo.h
-  HEADER matroska/KaxInfoData.h
-  HEADER matroska/KaxSeekHead.h
-  HEADER matroska/KaxSegment.h
-  HEADER matroska/KaxTag.h
-  HEADER matroska/KaxTagMulti.h
-  HEADER matroska/KaxTags.h
-  HEADER matroska/KaxTrackAudio.h
-  HEADER matroska/KaxTrackEntryData.h
-  HEADER matroska/KaxTrackVideo.h
-  HEADER matroska/KaxTracks.h
-  HEADER matroska/KaxTypes.h
-  HEADER matroska/KaxVersion.h
-  HEADER matroska/c/libmatroska_t.h
-  HEADER matroska/c/libmatroska.h
-}
+Include "*/*.proj"
+
+LIB matroska
+{
+  INCLUDE .
+  INCLUDE ../libebml
+
+  USE ebml
+
+//  OPTIMIZE_GLOBALLY .
+  FAVOR_MAX_SPEED .
+  REDUCE_SIZE .
+  FASTER_FLOAT .
+ =20
+  SOURCE src/FileKax.cpp
+  SOURCE src/KaxAttached.cpp
+  SOURCE src/KaxAttachments.cpp
+  SOURCE src/KaxBlock.cpp
+  SOURCE src/KaxBlockData.cpp
+  SOURCE src/KaxChapters.cpp
+  SOURCE src/KaxCluster.cpp
+  SOURCE src/KaxClusterData.cpp
+  SOURCE src/KaxContentEncoding.cpp
+  SOURCE src/KaxContexts.cpp
+  SOURCE src/KaxCues.cpp
+  SOURCE src/KaxCuesData.cpp
+  SOURCE src/KaxInfo.cpp
+  SOURCE src/KaxInfoData.cpp
+  SOURCE src/KaxSeekHead.cpp
+  SOURCE src/KaxSegment.cpp
+  SOURCE src/KaxTag.cpp
+  SOURCE src/KaxTagMulti.cpp
+  SOURCE src/KaxTags.cpp
+  SOURCE src/KaxTrackAudio.cpp
+  SOURCE src/KaxTrackEntryData.cpp
+  SOURCE src/KaxTrackVideo.cpp
+  SOURCE src/KaxTracks.cpp
+  SOURCE src/KaxVersion.cpp
+
+  HEADER matroska/FileKax.h
+  HEADER matroska/KaxAttached.h
+  HEADER matroska/KaxAttachments.h
+  HEADER matroska/KaxBlock.h
+  HEADER matroska/KaxBlockData.h
+  HEADER matroska/KaxChapters.h
+  HEADER matroska/KaxCluster.h
+  HEADER matroska/KaxClusterData.h
+  HEADER matroska/KaxConfig.h
+  HEADER matroska/KaxContentEncoding.h
+  HEADER matroska/KaxContexts.h
+  HEADER matroska/KaxCues.h
+  HEADER matroska/KaxCuesData.h
+  HEADER matroska/KaxInfo.h
+  HEADER matroska/KaxInfoData.h
+  HEADER matroska/KaxSeekHead.h
+  HEADER matroska/KaxSegment.h
+  HEADER matroska/KaxTag.h
+  HEADER matroska/KaxTagMulti.h
+  HEADER matroska/KaxTags.h
+  HEADER matroska/KaxTrackAudio.h
+  HEADER matroska/KaxTrackEntryData.h
+  HEADER matroska/KaxTrackVideo.h
+  HEADER matroska/KaxTracks.h
+  HEADER matroska/KaxTypes.h
+  HEADER matroska/KaxVersion.h
+  HEADER matroska/c/libmatroska_t.h
+  HEADER matroska/c/libmatroska.h
+}


Property changes on: trunk/libmatroska/libmatroska.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/libmatroska/matroska/KaxTag.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/libmatroska/matroska/KaxTag.h	2007-02-17 10:34:40 UTC (rev 1276=
)
+++ trunk/libmatroska/matroska/KaxTag.h	2007-02-17 10:55:54 UTC (rev 1277=
)
@@ -118,7 +118,7 @@
 class MATROSKA_DLL_API KaxTagTargetTypeValue : public EbmlUInteger {
 	public:
 		KaxTagTargetTypeValue() :EbmlUInteger(50) {}
-		KaxTagTargetTypeValue(const KaxTagTargetTypeValue & ElementToClone) :E=
bmlUInteger(ElementToClone) {}
+		KaxTagTargetTypeValue(const KaxTagTargetTypeValue & ElementToClone) :E=
bmlUInteger(ElementToClone) {}
 		static EbmlElement & Create() {return *(new KaxTagTargetTypeValue);}
 		const EbmlCallbacks & Generic() const {return ClassInfos;}
 		static const EbmlCallbacks ClassInfos;
@@ -140,7 +140,7 @@
 class MATROSKA_DLL_API KaxTagTrackUID : public EbmlUInteger {
 	public:
 		KaxTagTrackUID() :EbmlUInteger(0) {}
-		KaxTagTrackUID(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(El=
ementToClone) {}
+		KaxTagTrackUID(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(El=
ementToClone) {}
 		static EbmlElement & Create() {return *(new KaxTagTrackUID);}
 		const EbmlCallbacks & Generic() const {return ClassInfos;}
 		static const EbmlCallbacks ClassInfos;
@@ -663,7 +663,7 @@
 class MATROSKA_DLL_API KaxTagDefault : public EbmlUInteger {
 	public:
 		KaxTagDefault() :EbmlUInteger(1) {}
-		KaxTagDefault(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(Ele=
mentToClone) {}
+		KaxTagDefault(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(Ele=
mentToClone) {}
 		static EbmlElement & Create() {return *(new KaxTagDefault);}
 		const EbmlCallbacks & Generic() const {return ClassInfos;}
 		static const EbmlCallbacks ClassInfos;


Property changes on: trunk/libmatroska/matroska/KaxTag.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/libmatroska/test/ebml/ebml.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/libmatroska/test/ebml/ebml.proj	2007-02-17 10:34:40 UTC (rev 12=
76)
+++ trunk/libmatroska/test/ebml/ebml.proj	2007-02-17 10:55:54 UTC (rev 12=
77)
@@ -1,11 +1,11 @@
-#include "*/*.proj"
-
-CON ebml-test00
-{
-  SOURCE test00.cpp
-}
-
-CON ebml-test0
-{
-  SOURCE test0.cpp
-}
+#include "*/*.proj"
+
+CON ebml-test00
+{
+  SOURCE test00.cpp
+}
+
+CON ebml-test0
+{
+  SOURCE test0.cpp
+}


Property changes on: trunk/libmatroska/test/ebml/ebml.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/libmatroska/test/mux/mux.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/libmatroska/test/mux/mux.proj	2007-02-17 10:34:40 UTC (rev 1276=
)
+++ trunk/libmatroska/test/mux/mux.proj	2007-02-17 10:55:54 UTC (rev 1277=
)
@@ -1,11 +1,11 @@
-#include "*/*.proj"
-
-CON mux-test6
-{
-  SOURCE test6.cpp
-}
-
-CON mux-test8
-{
-  SOURCE test8.cpp
-}
+#include "*/*.proj"
+
+CON mux-test6
+{
+  SOURCE test6.cpp
+}
+
+CON mux-test8
+{
+  SOURCE test8.cpp
+}


Property changes on: trunk/libmatroska/test/mux/mux.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/libmatroska/test/tags/tags.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/libmatroska/test/tags/tags.proj	2007-02-17 10:34:40 UTC (rev 12=
76)
+++ trunk/libmatroska/test/tags/tags.proj	2007-02-17 10:55:54 UTC (rev 12=
77)
@@ -1,6 +1,6 @@
-#include "*/*.proj"
-
-CON tags-test9
-{
-  SOURCE tags.cpp
-}
+#include "*/*.proj"
+
+CON tags-test9
+{
+  SOURCE tags.cpp
+}


Property changes on: trunk/libmatroska/test/tags/tags.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/libmatroska/test/test.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/libmatroska/test/test.proj	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/libmatroska/test/test.proj	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1 +1 @@
-#include "*/*.proj"
+#include "*/*.proj"


Property changes on: trunk/libmatroska/test/test.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/libmatroska/test/utf8/utf8.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/libmatroska/test/utf8/utf8.proj	2007-02-17 10:34:40 UTC (rev 12=
76)
+++ trunk/libmatroska/test/utf8/utf8.proj	2007-02-17 10:55:54 UTC (rev 12=
77)
@@ -1,6 +1,6 @@
-#include "*/*.proj"
-
-CON utf8-test5
-{
-  SOURCE test5.cpp
-}
+#include "*/*.proj"
+
+CON utf8-test5
+{
+  SOURCE test5.cpp
+}


Property changes on: trunk/libmatroska/test/utf8/utf8.proj
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkaencoder/src/mkaenc.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkvwriter/IOCallbackWrapper.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkvwriter/MatroskaMuxer.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkvwriter/MatroskaSimpleTags.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkvwriter/mkvwriter.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkvwriter/pub/hxtmkvwriter.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/CoreVorbisGUID.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/MatroskaReader.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/OggDS.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/Subtitles.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/asyncio.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/codecs.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/global.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/mkxds/mkxPrioFrame.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/mkxds/mkxPrioFrame.h	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/mkxds/mkxPrioFrame.h	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,176 +1,176 @@
-/***********************************************************************=
*****
-** libmatroska : parse Matroska files, see http://www.matroska.org/
-**
-** <file/class description>
-**
-** Copyright (C) 2002-2003 Steve Lhomme.  All rights reserved.
-**
-** This file may be distributed under the terms of the Q Public License
-** as defined by Trolltech AS of Norway and appearing in the file
-** LICENSE.QPL included in the packaging of this file.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Softwar=
e
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding an other license may use this file in accordance wi=
th=20
-** the Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING T=
HE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE.
-**
-** See http://www.matroska.org/license/qpl/ for QPL licensing informatio=
n.
-** See http://www.matroska.org/license/gpl/ for GPL licensing informatio=
n.
-**
-** Contact [email protected] if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-/*!
-        \file
-        \version \$Id: mkxPrioFrame.h,v 1.7 2003/08/01 21:15:47 robux4 E=
xp $
-        \author Steve Lhomme     <robux4 @ users.sf.net>
-*/
-
-#ifndef MKXDS_MKX_PRIO_FRAME_H
-#define MKXDS_MKX_PRIO_FRAME_H
-
-#include "matroska/KaxBlock.h"
-#include "matroska/KaxBlockData.h"
-
-#include <map>
-#include <deque>
-
-using namespace LIBMATROSKA_NAMESPACE;
-
-/*!
-	\class MkxPrioBuffer
-*/
-class MkxPrioBuffer {
-public:
-	MkxPrioBuffer(KaxBlockGroup & aBlock)
-		:Block(&aBlock)
-		,Displayed(false)
-		,CanDelete(true)
-	{
-		KaxReferencePriority & RefPrio =3D GetChild<KaxReferencePriority>(aBlo=
ck);
-		Priority =3D uint8(RefPrio);
-		Timecode =3D aBlock.GlobalTimecode();
-	}
-
-	MkxPrioBuffer & operator=3D(const MkxPrioBuffer & aBuffer)
-	{
-		Block     =3D aBuffer.Block;
-		Priority  =3D aBuffer.Priority;
-		Timecode  =3D aBuffer.Timecode;
-		Displayed =3D aBuffer.Displayed;
-		return *this;
-	}
-
-	KaxBlockGroup * Block;
-	uint8           Priority; ///< used to speed access to this value
-	uint64          Timecode; ///< used to speed access to this value
-	bool            Displayed;
-	bool            CanDelete;
-};
-
-class MkxPrioKey {
-public:
-	MkxPrioKey(MkxPrioBuffer & aBuf)
-		:Elt(aBuf)
-	{}
-
-	bool operator<(const MkxPrioKey &aKey) const
-	{
-		return (Elt.Timecode < aKey.Elt.Timecode);
-	}
-=09
-	MkxPrioBuffer & Elt;
-};
-
-/*!
-	\class MkxPrioCache
-*/
-class MkxPrioCache : public CCritSec {
-public:
-	MkxPrioCache(UINT MinCache, UINT aMaxWriteThreshold, UINT aMaxReadThres=
hold,=20
-	         UINT aMinWriteThreshold =3D 1);
-	~MkxPrioCache();
-
-	void PushBlock(KaxBlockGroup & aBlock);
-
-	KaxBlockGroup * GetElementInTimeOrder();
-
-	KaxBlockGroup * GetNextInTimeOrder(KaxBlockGroup & aBlock);
-
-	void UsedBlock(KaxBlockGroup & aBlock);
-
-	void StartFlush();
-	void EndFlush();
-
-	void Reset();
-
-	BOOL IsEnding() const {return Ending;}
-	BOOL IsFlushing() const {return Flushing;}
-
-	/*!
-		\brief Retrieve a Block from the queue
-		\note Block until data is coming, unless it's being flushed or at the =
end of stream
-		\note the reader becomes the "owner" of the Block (memory freeing)
-		\return a Block or NULL if the queue is being flushed or ending
-	*/
-	KaxBlockGroup * GetFrontBlock();
-
-	/*!
-		\brief Put a Block in the queue
-		\param bForce pushing an element will not block the caller in this cas=
e
-		\note the queue becomes the "owner" of the Block (memory freeing)
-	*/
-//	void PushBlockBack(KaxBlockGroup * aBlock);
-
-	/*!
-		\brief trigger the Pause mode of the queue (reduced queue size)
-	*/
-	void SetPauseMode(bool bPauseMode);
-
-	/*!
-		\brief Signal that the queue will not have any further blocks
-	*/
-	void EndOfStream();
-
-#ifdef _UNICODE
-	std::wstring                        mName;
-#else // _UNICODE
-	std::string                         mName;
-#endif // _UNICODE
-
-	void SetMaxReadThreshold(UINT Threashold);
-	void SetMaxWriteThreshold(UINT Threashold);
-	void SetMinWriteThreshold(UINT Threashold);
-
-	void DisableWriteBlock();
-	void EnableWriteBlock();
-
-protected:
-	std::map<MkxPrioKey, MkxPrioBuffer*> DisplayOrderList;
-	std::deque<MkxPrioBuffer*>           CodingOrderList;
-	UINT                                 MinCache;
-	UINT                                 MinWriteThreshold;
-	UINT                                 MaxWriteThreshold;
-	UINT                                 MaxReadThreshold;
-	BOOL                                 Ending;
-	BOOL                                 Flushing;
-	CAMEvent                             mWriteUnBlock;
-	BOOL                                 bWriteCanBlock;
-	CAMEvent                             mReadUnBlock;
-
-	/*!
-		Erase blocks that are not needed anymore
-		\warning use only when locked
-	*/
-	void StripList();
-};
-
-#endif // MKXDS_MKX_PRIO_FRAME_H
-
+/***********************************************************************=
*****
+** libmatroska : parse Matroska files, see http://www.matroska.org/
+**
+** <file/class description>
+**
+** Copyright (C) 2002-2003 Steve Lhomme.  All rights reserved.
+**
+** This file may be distributed under the terms of the Q Public License
+** as defined by Trolltech AS of Norway and appearing in the file
+** LICENSE.QPL included in the packaging of this file.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Softwar=
e
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding an other license may use this file in accordance wi=
th=20
+** the Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING T=
HE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE.
+**
+** See http://www.matroska.org/license/qpl/ for QPL licensing informatio=
n.
+** See http://www.matroska.org/license/gpl/ for GPL licensing informatio=
n.
+**
+** Contact [email protected] if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+/*!
+        \file
+        \version \$Id: mkxPrioFrame.h,v 1.7 2003/08/01 21:15:47 robux4 E=
xp $
+        \author Steve Lhomme     <robux4 @ users.sf.net>
+*/
+
+#ifndef MKXDS_MKX_PRIO_FRAME_H
+#define MKXDS_MKX_PRIO_FRAME_H
+
+#include "matroska/KaxBlock.h"
+#include "matroska/KaxBlockData.h"
+
+#include <map>
+#include <deque>
+
+using namespace LIBMATROSKA_NAMESPACE;
+
+/*!
+	\class MkxPrioBuffer
+*/
+class MkxPrioBuffer {
+public:
+	MkxPrioBuffer(KaxBlockGroup & aBlock)
+		:Block(&aBlock)
+		,Displayed(false)
+		,CanDelete(true)
+	{
+		KaxReferencePriority & RefPrio =3D GetChild<KaxReferencePriority>(aBlo=
ck);
+		Priority =3D uint8(RefPrio);
+		Timecode =3D aBlock.GlobalTimecode();
+	}
+
+	MkxPrioBuffer & operator=3D(const MkxPrioBuffer & aBuffer)
+	{
+		Block     =3D aBuffer.Block;
+		Priority  =3D aBuffer.Priority;
+		Timecode  =3D aBuffer.Timecode;
+		Displayed =3D aBuffer.Displayed;
+		return *this;
+	}
+
+	KaxBlockGroup * Block;
+	uint8           Priority; ///< used to speed access to this value
+	uint64          Timecode; ///< used to speed access to this value
+	bool            Displayed;
+	bool            CanDelete;
+};
+
+class MkxPrioKey {
+public:
+	MkxPrioKey(MkxPrioBuffer & aBuf)
+		:Elt(aBuf)
+	{}
+
+	bool operator<(const MkxPrioKey &aKey) const
+	{
+		return (Elt.Timecode < aKey.Elt.Timecode);
+	}
+=09
+	MkxPrioBuffer & Elt;
+};
+
+/*!
+	\class MkxPrioCache
+*/
+class MkxPrioCache : public CCritSec {
+public:
+	MkxPrioCache(UINT MinCache, UINT aMaxWriteThreshold, UINT aMaxReadThres=
hold,=20
+	         UINT aMinWriteThreshold =3D 1);
+	~MkxPrioCache();
+
+	void PushBlock(KaxBlockGroup & aBlock);
+
+	KaxBlockGroup * GetElementInTimeOrder();
+
+	KaxBlockGroup * GetNextInTimeOrder(KaxBlockGroup & aBlock);
+
+	void UsedBlock(KaxBlockGroup & aBlock);
+
+	void StartFlush();
+	void EndFlush();
+
+	void Reset();
+
+	BOOL IsEnding() const {return Ending;}
+	BOOL IsFlushing() const {return Flushing;}
+
+	/*!
+		\brief Retrieve a Block from the queue
+		\note Block until data is coming, unless it's being flushed or at the =
end of stream
+		\note the reader becomes the "owner" of the Block (memory freeing)
+		\return a Block or NULL if the queue is being flushed or ending
+	*/
+	KaxBlockGroup * GetFrontBlock();
+
+	/*!
+		\brief Put a Block in the queue
+		\param bForce pushing an element will not block the caller in this cas=
e
+		\note the queue becomes the "owner" of the Block (memory freeing)
+	*/
+//	void PushBlockBack(KaxBlockGroup * aBlock);
+
+	/*!
+		\brief trigger the Pause mode of the queue (reduced queue size)
+	*/
+	void SetPauseMode(bool bPauseMode);
+
+	/*!
+		\brief Signal that the queue will not have any further blocks
+	*/
+	void EndOfStream();
+
+#ifdef _UNICODE
+	std::wstring                        mName;
+#else // _UNICODE
+	std::string                         mName;
+#endif // _UNICODE
+
+	void SetMaxReadThreshold(UINT Threashold);
+	void SetMaxWriteThreshold(UINT Threashold);
+	void SetMinWriteThreshold(UINT Threashold);
+
+	void DisableWriteBlock();
+	void EnableWriteBlock();
+
+protected:
+	std::map<MkxPrioKey, MkxPrioBuffer*> DisplayOrderList;
+	std::deque<MkxPrioBuffer*>           CodingOrderList;
+	UINT                                 MinCache;
+	UINT                                 MinWriteThreshold;
+	UINT                                 MaxWriteThreshold;
+	UINT                                 MaxReadThreshold;
+	BOOL                                 Ending;
+	BOOL                                 Flushing;
+	CAMEvent                             mWriteUnBlock;
+	BOOL                                 bWriteCanBlock;
+	CAMEvent                             mReadUnBlock;
+
+	/*!
+		Erase blocks that are not needed anymore
+		\warning use only when locked
+	*/
+	void StripList();
+};
+
+#endif // MKXDS_MKX_PRIO_FRAME_H
+


Property changes on: trunk/mkxds/mkxPrioFrame.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/mkx_opin.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/mkxds.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/mkxdsProperty.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/mkxread.h
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: trunk/mkxds/resource.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/mkxuncat/mkxuncat.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/mkxuncat/mkxuncat.proj	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/mkxuncat/mkxuncat.proj	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,16 +1,16 @@
-CON mkxuncat
-{
-  SOURCE mkxuncat.cpp
- =20
-  USE ebml
-  USE matroska
- =20
-  INCLUDE(TARGET_WIN) ../libebml/src/platform/win32
-  INCLUDE ../libebml
-  INCLUDE ../libmatroska
-}
-
-WORKSPACE mkxuncat
-{
-  USE mkxuncat
-}
+CON mkxuncat
+{
+  SOURCE mkxuncat.cpp
+ =20
+  USE ebml
+  USE matroska
+ =20
+  INCLUDE(TARGET_WIN) ../libebml/src/platform/win32
+  INCLUDE ../libebml
+  INCLUDE ../libmatroska
+}
+
+WORKSPACE mkxuncat
+{
+  USE mkxuncat
+}


Property changes on: trunk/mkxuncat/mkxuncat.proj
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/root.proj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/root.proj	2007-02-17 10:34:40 UTC (rev 1276)
+++ trunk/root.proj	2007-02-17 10:55:54 UTC (rev 1277)
@@ -1,5 +1,5 @@
-CONFIG_FILE config.h
-PLATFORM_FILES coremake
-
-#include "*/*.proj"
-
+CONFIG_FILE config.h
+PLATFORM_FILES coremake
+
+#include "*/*.proj"
+


Property changes on: trunk/root.proj
___________________________________________________________________
Name: svn:eol-style
   + native