]> granicus.if.org Git - libmatroska/commitdiff
libebml/libebml2: only Master elements can have an infinite/unknown size
authorSteve Lhomme <slhomme@matroska.org>
Tue, 25 May 2010 12:02:30 +0000 (12:02 +0000)
committerSteve Lhomme <slhomme@matroska.org>
Tue, 25 May 2010 12:02:30 +0000 (12:02 +0000)
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@270 a6f86f6d-0131-4f8e-9e7b-e335508773d5

matroska/KaxChapters.h
matroska/KaxInfoData.h
matroska/KaxSeekHead.h
matroska/KaxTag.h
matroska/KaxTagMulti.h
matroska/KaxTrackVideo.h

index 977005287c91f6a5d939cb20a541850291251f7f..fc934d15800d80b5248d76f16bd9570129fc55d6 100644 (file)
-/****************************************************************************\r
-** libmatroska : parse Matroska files, see http://www.matroska.org/\r
-**\r
-** <file/class description>\r
-**\r
-** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.\r
-**\r
-** This file is part of libmatroska.\r
-**\r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-** \r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-** Lesser General Public License for more details.\r
-** \r
-** You should have received a copy of the GNU Lesser General Public\r
-** License along with this library; if not, write to the Free Software\r
-** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-**\r
-** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**\r
-** Contact license@matroska.org if any conditions of this licensing are\r
-** not clear to you.\r
-**\r
-**********************************************************************/\r
-\r
-/*!\r
-       \file\r
-       \version \$Id: KaxChapters.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $\r
-       \author Steve Lhomme     <robux4 @ users.sf.net>\r
-*/\r
-#ifndef LIBMATROSKA_CHAPTERS_H\r
-#define LIBMATROSKA_CHAPTERS_H\r
-\r
-#include "matroska/KaxTypes.h"\r
-#include "ebml/EbmlMaster.h"\r
-#include "ebml/EbmlUInteger.h"\r
-#include "ebml/EbmlUnicodeString.h"\r
-#include "ebml/EbmlString.h"\r
-#include "ebml/EbmlBinary.h"\r
-#include "matroska/KaxDefines.h"\r
-\r
-using namespace LIBEBML_NAMESPACE;\r
-\r
-START_LIBMATROSKA_NAMESPACE\r
-\r
-DECLARE_MKX_MASTER(KaxChapters)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxEditionEntry)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxEditionUID)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxEditionFlagHidden)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxEditionFlagDefault)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxEditionFlagOrdered)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxChapterAtom)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterUID)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterTimeStart)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterTimeEnd)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterFlagHidden)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterFlagEnabled)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxChapterSegmentUID)\r
-    public:\r
-           virtual bool ValidateSize() const { return (GetSize() == 16);}\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxChapterSegmentEditionUID)\r
-    public:\r
-           virtual bool ValidateSize() const { return (GetSize() == 16);}\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterPhysicalEquiv)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxChapterTrack)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterTrackNumber)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxChapterDisplay)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxChapterString)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxChapterLanguage)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxChapterCountry)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxChapterProcess)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterProcessCodecID)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxChapterProcessPrivate)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxChapterProcessCommand)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterProcessTime)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxChapterProcessData)\r
-};\r
-\r
-END_LIBMATROSKA_NAMESPACE\r
-\r
-#endif // LIBMATROSKA_CHAPTERS_H\r
+/****************************************************************************
+** libmatroska : parse Matroska files, see http://www.matroska.org/
+**
+** <file/class description>
+**
+** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.
+**
+** This file is part of libmatroska.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License as published by the Free Software Foundation; either
+** version 2.1 of the License, or (at your option) any later version.
+** 
+** This library 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
+** Lesser General Public License for more details.
+** 
+** You should have received a copy of the GNU Lesser General Public
+** License along with this library; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+**
+** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
+** Contact license@matroska.org if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+/*!
+       \file
+       \version \$Id$
+       \author Steve Lhomme     <robux4 @ users.sf.net>
+*/
+#ifndef LIBMATROSKA_CHAPTERS_H
+#define LIBMATROSKA_CHAPTERS_H
+
+#include "matroska/KaxTypes.h"
+#include "ebml/EbmlMaster.h"
+#include "ebml/EbmlUInteger.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlString.h"
+#include "ebml/EbmlBinary.h"
+#include "matroska/KaxDefines.h"
+
+using namespace LIBEBML_NAMESPACE;
+
+START_LIBMATROSKA_NAMESPACE
+
+DECLARE_MKX_MASTER(KaxChapters)
+};
+
+DECLARE_MKX_MASTER(KaxEditionEntry)
+};
+
+DECLARE_MKX_UINTEGER(KaxEditionUID)
+};
+
+DECLARE_MKX_UINTEGER(KaxEditionFlagHidden)
+};
+
+DECLARE_MKX_UINTEGER(KaxEditionFlagDefault)
+};
+
+DECLARE_MKX_UINTEGER(KaxEditionFlagOrdered)
+};
+
+DECLARE_MKX_MASTER(KaxChapterAtom)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterUID)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterTimeStart)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterTimeEnd)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterFlagHidden)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterFlagEnabled)
+};
+
+DECLARE_MKX_BINARY(KaxChapterSegmentUID)
+    public:
+           virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
+};
+
+DECLARE_MKX_BINARY(KaxChapterSegmentEditionUID)
+    public:
+           virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterPhysicalEquiv)
+};
+
+DECLARE_MKX_MASTER(KaxChapterTrack)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterTrackNumber)
+};
+
+DECLARE_MKX_MASTER(KaxChapterDisplay)
+};
+
+DECLARE_MKX_UNISTRING(KaxChapterString)
+};
+
+DECLARE_MKX_STRING(KaxChapterLanguage)
+};
+
+DECLARE_MKX_STRING(KaxChapterCountry)
+};
+
+DECLARE_MKX_MASTER(KaxChapterProcess)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterProcessCodecID)
+};
+
+DECLARE_MKX_BINARY(KaxChapterProcessPrivate)
+};
+
+DECLARE_MKX_MASTER(KaxChapterProcessCommand)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterProcessTime)
+};
+
+DECLARE_MKX_BINARY(KaxChapterProcessData)
+};
+
+END_LIBMATROSKA_NAMESPACE
+
+#endif // LIBMATROSKA_CHAPTERS_H
index dc703b414d51e404102154a347128aecdbbea419..71c992917386161a99e2365b508956cbe08f0282 100644 (file)
-/****************************************************************************\r
-** libmatroska : parse Matroska files, see http://www.matroska.org/\r
-**\r
-** <file/class description>\r
-**\r
-** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.\r
-**\r
-** This file is part of libmatroska.\r
-**\r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-** \r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-** Lesser General Public License for more details.\r
-** \r
-** You should have received a copy of the GNU Lesser General Public\r
-** License along with this library; if not, write to the Free Software\r
-** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-**\r
-** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**\r
-** Contact license@matroska.org if any conditions of this licensing are\r
-** not clear to you.\r
-**\r
-**********************************************************************/\r
-\r
-/*!\r
-       \file\r
-       \version \$Id: KaxInfoData.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $\r
-       \author Steve Lhomme     <robux4 @ users.sf.net>\r
-       \author John Cannon      <spyder2555 @ users.sf.net>\r
-       \author Moritz Bunkus    <moritz @ bunkus.org>\r
-*/\r
-#ifndef LIBMATROSKA_INFO_DATA_H\r
-#define LIBMATROSKA_INFO_DATA_H\r
-\r
-#include "matroska/KaxTypes.h"\r
-#include "ebml/EbmlUInteger.h"\r
-#include "ebml/EbmlFloat.h"\r
-#include "ebml/EbmlUnicodeString.h"\r
-#include "ebml/EbmlBinary.h"\r
-#include "ebml/EbmlDate.h"\r
-#include "ebml/EbmlMaster.h"\r
-#include "matroska/KaxDefines.h"\r
-\r
-using namespace LIBEBML_NAMESPACE;\r
-\r
-START_LIBMATROSKA_NAMESPACE\r
-\r
-DECLARE_MKX_BINARY(KaxSegmentUID)\r
-       public:\r
-#if LIBEBML_VERSION >= 0x010000\r
-        KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_PARAM);\r
-#endif\r
-               virtual bool ValidateSize() const { return (GetSize() == 16);}\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxSegmentFilename)\r
-};\r
-\r
-DECLARE_MKX_CONTEXT(KaxPrevUID);\r
-class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID {\r
-       public:\r
-               KaxPrevUID(EBML_EXTRA_PARAM);\r
-               KaxPrevUID(const KaxPrevUID & ElementToClone) :KaxSegmentUID(ElementToClone){}\r
-               virtual bool ValidateSize() const { return (GetSize() == 16);}\r
-\r
-        EBML_CONCRETE_CLASS(KaxPrevUID)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxPrevFilename)\r
-};\r
-\r
-DECLARE_MKX_CONTEXT(KaxNextUID);\r
-class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID {\r
-       public:\r
-               KaxNextUID(EBML_EXTRA_PARAM);\r
-               KaxNextUID(const KaxNextUID & ElementToClone) :KaxSegmentUID(ElementToClone){}\r
-               virtual bool ValidateSize() const { return (GetSize() == 16);}\r
-\r
-        EBML_CONCRETE_CLASS(KaxNextUID)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxNextFilename)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxSegmentFamily)\r
-       public:\r
-               virtual bool ValidateSize() const { return (GetSize() == 16);}\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxChapterTranslate)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterTranslateCodec)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxChapterTranslateEditionUID)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxChapterTranslateID)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTimecodeScale)\r
-};\r
-\r
-DECLARE_MKX_FLOAT(KaxDuration)\r
-};\r
-\r
-DECLARE_MKX_DATE(KaxDateUTC)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTitle)\r
-};\r
-\r
-END_LIBMATROSKA_NAMESPACE\r
-\r
-#endif // LIBMATROSKA_INFO_DATA_H\r
+/****************************************************************************
+** libmatroska : parse Matroska files, see http://www.matroska.org/
+**
+** <file/class description>
+**
+** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.
+**
+** This file is part of libmatroska.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License as published by the Free Software Foundation; either
+** version 2.1 of the License, or (at your option) any later version.
+** 
+** This library 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
+** Lesser General Public License for more details.
+** 
+** You should have received a copy of the GNU Lesser General Public
+** License along with this library; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+**
+** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
+** Contact license@matroska.org if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+/*!
+       \file
+       \version \$Id$
+       \author Steve Lhomme     <robux4 @ users.sf.net>
+       \author John Cannon      <spyder2555 @ users.sf.net>
+       \author Moritz Bunkus    <moritz @ bunkus.org>
+*/
+#ifndef LIBMATROSKA_INFO_DATA_H
+#define LIBMATROSKA_INFO_DATA_H
+
+#include "matroska/KaxTypes.h"
+#include "ebml/EbmlUInteger.h"
+#include "ebml/EbmlFloat.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlBinary.h"
+#include "ebml/EbmlDate.h"
+#include "ebml/EbmlMaster.h"
+#include "matroska/KaxDefines.h"
+
+using namespace LIBEBML_NAMESPACE;
+
+START_LIBMATROSKA_NAMESPACE
+
+DECLARE_MKX_BINARY(KaxSegmentUID)
+       public:
+#if LIBEBML_VERSION >= 0x010000
+        KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_PARAM);
+#endif
+               virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
+};
+
+DECLARE_MKX_UNISTRING(KaxSegmentFilename)
+};
+
+DECLARE_MKX_CONTEXT(KaxPrevUID);
+class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID {
+       public:
+               KaxPrevUID(EBML_EXTRA_PARAM);
+               KaxPrevUID(const KaxPrevUID & ElementToClone) :KaxSegmentUID(ElementToClone){}
+               virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
+
+        EBML_CONCRETE_CLASS(KaxPrevUID)
+};
+
+DECLARE_MKX_UNISTRING(KaxPrevFilename)
+};
+
+DECLARE_MKX_CONTEXT(KaxNextUID);
+class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID {
+       public:
+               KaxNextUID(EBML_EXTRA_PARAM);
+               KaxNextUID(const KaxNextUID & ElementToClone) :KaxSegmentUID(ElementToClone){}
+               virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
+
+        EBML_CONCRETE_CLASS(KaxNextUID)
+};
+
+DECLARE_MKX_UNISTRING(KaxNextFilename)
+};
+
+DECLARE_MKX_BINARY(KaxSegmentFamily)
+       public:
+               virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
+};
+
+DECLARE_MKX_MASTER(KaxChapterTranslate)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterTranslateCodec)
+};
+
+DECLARE_MKX_UINTEGER(KaxChapterTranslateEditionUID)
+};
+
+DECLARE_MKX_BINARY(KaxChapterTranslateID)
+};
+
+DECLARE_MKX_UINTEGER(KaxTimecodeScale)
+};
+
+DECLARE_MKX_FLOAT(KaxDuration)
+};
+
+DECLARE_MKX_DATE(KaxDateUTC)
+};
+
+DECLARE_MKX_UNISTRING(KaxTitle)
+};
+
+END_LIBMATROSKA_NAMESPACE
+
+#endif // LIBMATROSKA_INFO_DATA_H
index eb6e601e11283565aaa7fe1929363f8114f4803e..84e411e6d01fee3b1846bd0021b529f47f7742d3 100644 (file)
@@ -1,80 +1,80 @@
-/****************************************************************************\r
-** libmatroska : parse Matroska files, see http://www.matroska.org/\r
-**\r
-** <file/class description>\r
-**\r
-** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.\r
-**\r
-** This file is part of libmatroska.\r
-**\r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-** \r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-** Lesser General Public License for more details.\r
-** \r
-** You should have received a copy of the GNU Lesser General Public\r
-** License along with this library; if not, write to the Free Software\r
-** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-**\r
-** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**\r
-** Contact license@matroska.org if any conditions of this licensing are\r
-** not clear to you.\r
-**\r
-**********************************************************************/\r
-\r
-/*!\r
-       \file\r
-       \version \$Id: KaxSeekHead.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $\r
-       \author Steve Lhomme     <robux4 @ users.sf.net>\r
-*/\r
-#ifndef LIBMATROSKA_SEEK_HEAD_H\r
-#define LIBMATROSKA_SEEK_HEAD_H\r
-\r
-#include "matroska/KaxTypes.h"\r
-#include "ebml/EbmlMaster.h"\r
-#include "ebml/EbmlBinary.h"\r
-#include "ebml/EbmlUInteger.h"\r
-#include "matroska/KaxDefines.h"\r
-\r
-using namespace LIBEBML_NAMESPACE;\r
-\r
-START_LIBMATROSKA_NAMESPACE\r
-\r
-class KaxSegment;\r
-class KaxSeek;\r
-\r
-DECLARE_MKX_MASTER(KaxSeekHead)\r
-       public:\r
-               /*!\r
-                       \brief add an element to index in the Meta Seek data\r
-                       \note the element should already be written in the file\r
-               */\r
-               void IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment);\r
-\r
-               KaxSeek * FindFirstOf(const EbmlCallbacks & Callbacks) const;\r
-               KaxSeek * FindNextOf(const KaxSeek &aPrev) const;\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxSeek)\r
-       public:\r
-               int64 Location() const;\r
-               bool IsEbmlId(const EbmlId & aId) const;\r
-               bool IsEbmlId(const KaxSeek & aPoint) const;\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxSeekID)\r
-       public:\r
-               virtual bool ValidateSize() const {return GetSize() <= 4;}\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxSeekPosition)\r
-};\r
-\r
-END_LIBMATROSKA_NAMESPACE\r
-\r
-#endif // LIBMATROSKA_SEEK_HEAD_H\r
+/****************************************************************************
+** libmatroska : parse Matroska files, see http://www.matroska.org/
+**
+** <file/class description>
+**
+** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.
+**
+** This file is part of libmatroska.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License as published by the Free Software Foundation; either
+** version 2.1 of the License, or (at your option) any later version.
+** 
+** This library 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
+** Lesser General Public License for more details.
+** 
+** You should have received a copy of the GNU Lesser General Public
+** License along with this library; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+**
+** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
+** Contact license@matroska.org if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+/*!
+       \file
+       \version \$Id$
+       \author Steve Lhomme     <robux4 @ users.sf.net>
+*/
+#ifndef LIBMATROSKA_SEEK_HEAD_H
+#define LIBMATROSKA_SEEK_HEAD_H
+
+#include "matroska/KaxTypes.h"
+#include "ebml/EbmlMaster.h"
+#include "ebml/EbmlBinary.h"
+#include "ebml/EbmlUInteger.h"
+#include "matroska/KaxDefines.h"
+
+using namespace LIBEBML_NAMESPACE;
+
+START_LIBMATROSKA_NAMESPACE
+
+class KaxSegment;
+class KaxSeek;
+
+DECLARE_MKX_MASTER(KaxSeekHead)
+       public:
+               /*!
+                       \brief add an element to index in the Meta Seek data
+                       \note the element should already be written in the file
+               */
+               void IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment);
+
+               KaxSeek * FindFirstOf(const EbmlCallbacks & Callbacks) const;
+               KaxSeek * FindNextOf(const KaxSeek &aPrev) const;
+};
+
+DECLARE_MKX_MASTER(KaxSeek)
+       public:
+               int64 Location() const;
+               bool IsEbmlId(const EbmlId & aId) const;
+               bool IsEbmlId(const KaxSeek & aPoint) const;
+};
+
+DECLARE_MKX_BINARY(KaxSeekID)
+       public:
+               virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() <= 4;}
+};
+
+DECLARE_MKX_UINTEGER(KaxSeekPosition)
+};
+
+END_LIBMATROSKA_NAMESPACE
+
+#endif // LIBMATROSKA_SEEK_HEAD_H
index 14da537c95cb3a6852e2b73a1805c7a59dd609ff..3b95cf74f0ca8dad814592909c61da9d10877c08 100644 (file)
-/****************************************************************************\r
-** libmatroska : parse Matroska files, see http://www.matroska.org/\r
-**\r
-** <file/class MATROSKA_DLL_API description>\r
-**\r
-** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.\r
-**\r
-** This file is part of libmatroska.\r
-**\r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-** \r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-** Lesser General Public License for more details.\r
-** \r
-** You should have received a copy of the GNU Lesser General Public\r
-** License along with this library; if not, write to the Free Software\r
-** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-**\r
-** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**\r
-** Contact license@matroska.org if any conditions of this licensing are\r
-** not clear to you.\r
-**\r
-**********************************************************************/\r
-\r
-/*!\r
-       \file\r
-       \version \$Id: KaxTag.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $\r
-       \author Jory Stone     <jcsston @ toughguy.net>\r
-       \author Steve Lhomme   <robux4 @ users.sf.net>\r
-*/\r
-#ifndef LIBMATROSKA_TAG_H\r
-#define LIBMATROSKA_TAG_H\r
-\r
-#include "matroska/KaxTypes.h"\r
-#include "ebml/EbmlMaster.h"\r
-#include "ebml/EbmlFloat.h"\r
-#include "ebml/EbmlSInteger.h"\r
-#include "ebml/EbmlUInteger.h"\r
-#include "ebml/EbmlString.h"\r
-#include "ebml/EbmlUnicodeString.h"\r
-#include "ebml/EbmlBinary.h"\r
-#include "matroska/KaxDefines.h"\r
-\r
-using namespace LIBEBML_NAMESPACE;\r
-\r
-START_LIBMATROSKA_NAMESPACE\r
-\r
-DECLARE_MKX_MASTER(KaxTag)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagTargets)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagGeneral)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagGenres)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagAudioSpecific)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagImageSpecific)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagTargetTypeValue)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagTargetType)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagTrackUID)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagEditionUID)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagChapterUID)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagAttachmentUID)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagArchivalLocation)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagAudioEncryption)\r
-};\r
-\r
-DECLARE_MKX_FLOAT(KaxTagAudioGain)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagAudioGenre)\r
-};\r
-\r
-DECLARE_MKX_FLOAT(KaxTagAudioPeak)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagBibliography)\r
-};\r
-\r
-DECLARE_MKX_FLOAT(KaxTagBPM)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagCaptureDPI)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagCaptureLightness)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagCapturePaletteSetting)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagCaptureSharpness)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagCropped)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagDiscTrack)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagEncoder)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagEncodeSettings)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagEqualisation)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagFile)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagInitialKey)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagKeywords)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagLanguage)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagLength)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMood)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagOfficialAudioFileURL)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagOfficialAudioSourceURL)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagOriginalDimensions)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagOriginalMediaType)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagPlayCounter)\r
-};                      \r
-\r
-DECLARE_MKX_UINTEGER(KaxTagPlaylistDelay)\r
-};\r
-\r
-DECLARE_MKX_SINTEGER(KaxTagPopularimeter)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagProduct)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagRating)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagRecordLocation)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagSetPart)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagSource)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagSourceForm)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagSubGenre)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagSubject)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagUnsynchronisedText)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagUserDefinedURL)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagVideoGenre)\r
-       public:\r
-               virtual bool ValidateSize() const {return (GetSize() >= 2);}\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagSimple)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagName)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagLangue)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagDefault)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagString)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagBinary)\r
-};\r
-\r
-END_LIBMATROSKA_NAMESPACE\r
-\r
-#endif // LIBMATROSKA_TAG_H\r
+/****************************************************************************
+** libmatroska : parse Matroska files, see http://www.matroska.org/
+**
+** <file/class MATROSKA_DLL_API description>
+**
+** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.
+**
+** This file is part of libmatroska.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License as published by the Free Software Foundation; either
+** version 2.1 of the License, or (at your option) any later version.
+** 
+** This library 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
+** Lesser General Public License for more details.
+** 
+** You should have received a copy of the GNU Lesser General Public
+** License along with this library; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+**
+** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
+** Contact license@matroska.org if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+/*!
+       \file
+       \version \$Id$
+       \author Jory Stone     <jcsston @ toughguy.net>
+       \author Steve Lhomme   <robux4 @ users.sf.net>
+*/
+#ifndef LIBMATROSKA_TAG_H
+#define LIBMATROSKA_TAG_H
+
+#include "matroska/KaxTypes.h"
+#include "ebml/EbmlMaster.h"
+#include "ebml/EbmlFloat.h"
+#include "ebml/EbmlSInteger.h"
+#include "ebml/EbmlUInteger.h"
+#include "ebml/EbmlString.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlBinary.h"
+#include "matroska/KaxDefines.h"
+
+using namespace LIBEBML_NAMESPACE;
+
+START_LIBMATROSKA_NAMESPACE
+
+DECLARE_MKX_MASTER(KaxTag)
+};
+
+DECLARE_MKX_MASTER(KaxTagTargets)
+};
+
+DECLARE_MKX_MASTER(KaxTagGeneral)
+};
+
+DECLARE_MKX_MASTER(KaxTagGenres)
+};
+
+DECLARE_MKX_MASTER(KaxTagAudioSpecific)
+};
+
+DECLARE_MKX_MASTER(KaxTagImageSpecific)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagTargetTypeValue)
+};
+
+DECLARE_MKX_STRING(KaxTagTargetType)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagTrackUID)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagEditionUID)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagChapterUID)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagAttachmentUID)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagArchivalLocation)
+};
+
+DECLARE_MKX_BINARY(KaxTagAudioEncryption)
+};
+
+DECLARE_MKX_FLOAT(KaxTagAudioGain)
+};
+
+DECLARE_MKX_STRING(KaxTagAudioGenre)
+};
+
+DECLARE_MKX_FLOAT(KaxTagAudioPeak)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagBibliography)
+};
+
+DECLARE_MKX_FLOAT(KaxTagBPM)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagCaptureDPI)
+};
+
+DECLARE_MKX_BINARY(KaxTagCaptureLightness)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagCapturePaletteSetting)
+};
+
+DECLARE_MKX_BINARY(KaxTagCaptureSharpness)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagCropped)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagDiscTrack)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagEncoder)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagEncodeSettings)
+};
+
+DECLARE_MKX_BINARY(KaxTagEqualisation)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagFile)
+};
+
+DECLARE_MKX_STRING(KaxTagInitialKey)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagKeywords)
+};
+
+DECLARE_MKX_STRING(KaxTagLanguage)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagLength)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMood)
+};
+
+DECLARE_MKX_STRING(KaxTagOfficialAudioFileURL)
+};
+
+DECLARE_MKX_STRING(KaxTagOfficialAudioSourceURL)
+};
+
+DECLARE_MKX_STRING(KaxTagOriginalDimensions)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagOriginalMediaType)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagPlayCounter)
+};                      
+
+DECLARE_MKX_UINTEGER(KaxTagPlaylistDelay)
+};
+
+DECLARE_MKX_SINTEGER(KaxTagPopularimeter)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagProduct)
+};
+
+DECLARE_MKX_BINARY(KaxTagRating)
+};
+
+DECLARE_MKX_STRING(KaxTagRecordLocation)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagSetPart)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagSource)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagSourceForm)
+};
+
+DECLARE_MKX_STRING(KaxTagSubGenre)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagSubject)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagUnsynchronisedText)
+};
+
+DECLARE_MKX_STRING(KaxTagUserDefinedURL)
+};
+
+DECLARE_MKX_BINARY(KaxTagVideoGenre)
+       public:
+               virtual bool ValidateSize() const {return IsFiniteSize() && (GetSize() >= 2);}
+};
+
+DECLARE_MKX_MASTER(KaxTagSimple)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagName)
+};
+
+DECLARE_MKX_STRING(KaxTagLangue)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagDefault)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagString)
+};
+
+DECLARE_MKX_BINARY(KaxTagBinary)
+};
+
+END_LIBMATROSKA_NAMESPACE
+
+#endif // LIBMATROSKA_TAG_H
index 06a6a5cb2ac9807fcb1853666427d582a8e48a62..facaf7041a978969d75cefe18a9902607507113a 100644 (file)
-/****************************************************************************\r
-** libmatroska : parse Matroska files, see http://www.matroska.org/\r
-**\r
-** <file/class MATROSKA_DLL_API description>\r
-**\r
-** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.\r
-**\r
-** This file is part of libmatroska.\r
-**\r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-** \r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-** Lesser General Public License for more details.\r
-** \r
-** You should have received a copy of the GNU Lesser General Public\r
-** License along with this library; if not, write to the Free Software\r
-** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-**\r
-** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**\r
-** Contact license@matroska.org if any conditions of this licensing are\r
-** not clear to you.\r
-**\r
-**********************************************************************/\r
-\r
-/*!\r
-       \file\r
-       \version \$Id: KaxTagMulti.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $\r
-       \author Jory Stone     <jcsston @ toughguy.net>\r
-       \author Steve Lhomme   <robux4 @ users.sf.net>\r
-*/\r
-#ifndef LIBMATROSKA_TAGMULTI_H\r
-#define LIBMATROSKA_TAGMULTI_H\r
-\r
-#include "matroska/KaxTypes.h"\r
-#include "ebml/EbmlMaster.h"\r
-#include "ebml/EbmlDate.h"\r
-#include "ebml/EbmlFloat.h"\r
-#include "ebml/EbmlSInteger.h"\r
-#include "ebml/EbmlUInteger.h"\r
-#include "ebml/EbmlString.h"\r
-#include "ebml/EbmlUnicodeString.h"\r
-#include "ebml/EbmlBinary.h"\r
-#include "matroska/KaxDefines.h"\r
-\r
-using namespace LIBEBML_NAMESPACE;\r
-\r
-START_LIBMATROSKA_NAMESPACE\r
-\r
-enum KaxTagMultiCommercialTypes {\r
-       KaxTagMultiCommercialType_FilePurchase = 1, //Information on where to purchase this file. This is akin to the WPAY tag in ID3.\r
-       KaxTagMultiCommercialType_ItemPurchase, //Information on where to purchase this album. This is akin to the WCOM tag in ID3.\r
-       KaxTagMultiCommercialType_Owner  //Information on the purchase that occurred for this file. This is akin to the OWNE tag in ID3.\r
-};\r
-enum KaxTagMultiDateTypes {\r
-       KaxTagMultiDateType_EncodingDate = 1, //The time that the encoding of this item was completed. This is akin to the TDEN tag in ID3.\r
-       KaxTagMultiDateType_RecordingDate, //The time that the recording began, and finished. This is akin to the TDRC tag in ID3.\r
-       KaxTagMultiDateType_ReleaseDate, //The time that the item was originaly released. This is akin to the TDRL tag in ID3.\r
-       KaxTagMultiDateType_OriginalReleaseDate, //The time that the item was originaly released if it is a remake. This is akin to the TDOR tag in ID3.\r
-       KaxTagMultiDateType_TaggingDate, //The time that the tags were done for this item. This is akin to the TDTG tag in ID3.\r
-       KaxTagMultiDateType_DigitizingDate  //The time that the item was tranfered to a digital medium. This is akin to the IDIT tag in RIFF\r
-};\r
-enum KaxTagMultiEntitiesTypes {\r
-       KaxTagMultiEntitiesType_LyricistTextWriter = 1, //The person that wrote the words/script for this item. This is akin to the TEXT tag in ID3.\r
-       KaxTagMultiEntitiesType_Composer, //The name of the composer of this item. This is akin to the TCOM tag in ID3.\r
-       KaxTagMultiEntitiesType_LeadPerformerSoloist, //This is akin to the TPE1 tag in ID3.\r
-       KaxTagMultiEntitiesType_BandOrchestraAccompaniment, //This is akin to the TPE2 tag in ID3.\r
-       KaxTagMultiEntitiesType_OriginalLyricistTextWriter, //This is akin to the TOLY tag in ID3.\r
-       KaxTagMultiEntitiesType_OriginalArtistPerformer, //This is akin to the TOPE tag in ID3.\r
-       KaxTagMultiEntitiesType_OriginalAlbumMovieShowTitle, //This is akin to the TOAL tag in ID3.\r
-       KaxTagMultiEntitiesType_ConductorPerformerRefinement, //This is akin to the TPE3 tag in ID3.\r
-       KaxTagMultiEntitiesType_InterpretedRemixedBy, //This is akin to the TPE4 tag in ID3.\r
-       KaxTagMultiEntitiesType_Director, //This is akin to the IART tag in RIFF\r
-       KaxTagMultiEntitiesType_ProducedBy, //This is akin to the IPRO tag in Extended RIFF\r
-       KaxTagMultiEntitiesType_Cinematographer, //This is akin to the ICNM tag in Extended RIFF\r
-       KaxTagMultiEntitiesType_ProductionDesigner, //This is akin to the IPDS tag in Extended RIFF\r
-       KaxTagMultiEntitiesType_CostumeDesigner, //This is akin to the ICDS tag in Extended RIFF\r
-       KaxTagMultiEntitiesType_ProductionStudio, //This is akin to the ISTD tag in Extended RIFF\r
-       KaxTagMultiEntitiesType_DistributedBy, //This is akin to the IDST tag in Extended RIFF\r
-       KaxTagMultiEntitiesType_CommissionedBy, //This is akin to the ICMS tag in RIFF\r
-       KaxTagMultiEntitiesType_Engineer, //This is akin to the IENG tag in RIFF\r
-       KaxTagMultiEntitiesType_EditedBy, //This is akin to the IEDT tag in Extended RIFF\r
-       KaxTagMultiEntitiesType_EncodedBy, //This is akin to the TENC tag in ID3.\r
-       KaxTagMultiEntitiesType_RippedBy, //This is akin to the IRIP tag in Extended RIFF\r
-       KaxTagMultiEntitiesType_InvolvedPeopleList, //A very general tag for everyone else that wants to be listed. This is akin to the TMCL tag in ID3.\r
-       KaxTagMultiEntitiesType_InternetRadioStationName, //This is akin to the TSRN tag in ID3.\r
-       KaxTagMultiEntitiesType_Publisher  //This is akin to the TPUB tag in ID3.\r
-};\r
-\r
-enum KaxTagMultiIdentifierTypes {\r
-       KaxTagMultiIdentifierType_ISRC = 1, //String, The International Standard Recording Code\r
-       KaxTagMultiIdentifierType_CDIdentifier, //Binary, This is a binary dump of the TOC of the CDROM that this item was taken from. This holds the same information as the MCDI in ID3.\r
-       KaxTagMultiIdentifierType_ISBN, //String, International Standard Book Number\r
-       KaxTagMultiIdentifierType_Catalog, //String, sometimes the EAN/UPC, often some letters followed by some numbers\r
-       KaxTagMultiIdentifierType_EAN, //String, EAN-13 bar code identifier\r
-       KaxTagMultiIdentifierType_UPC, //String, UPC-A bar code identifier\r
-       KaxTagMultiIdentifierType_LabelCode, //String, Typically printed as ________ (LC) xxxx) ~~~~~~~~ or _________ (LC) 0xxxx) ~~~~~~~~~ on CDs medias or covers, where xxxx is a 4-digit number.\r
-       KaxTagMultiIdentifierType_LCCN, //String, Library of Congress Control Number\r
-       KaxTagMultiIdentifierType_UniqueFileIdentifier, //Binary, This used for a dump of the UFID field in ID3. This field would only be used if the item was pulled from an MP3.\r
-       CDROM_CD_TEXT_PACK_TOC_INFO2  //Binary\r
-};\r
-\r
-enum KaxTagMultiLegalTypes {\r
-       KaxTagMultiLegalType_Copyright = 1, //The copyright information as per the copyright holder. This is akin to the TCOP tag in ID3.\r
-       KaxTagMultiLegalType_ProductionCopyright, //The copyright information as per the production copyright holder. This is akin to the TPRO tag in ID3.\r
-       KaxTagMultiLegalType_TermsOfUse  //The terms of use for this item. This is akin to the USER tag in ID3.\r
-};\r
-\r
-enum KaxTagMultiTitleTypes {\r
-       KaxTagMultiTitleType_TrackTitle = 1,\r
-               //The title of this item. In the case of a track, the Name element should be identical to the Name element.\r
-               //For example, for music you might label this "Canon in D", or for video's audio track you might use "English 5.1" This is akin to the TIT2 tag in ID3.\r
-       KaxTagMultiTitleType_AlbumMovieShowTitle,\r
-               //This is the name given to a grouping of tracks and/or chapters. \r
-               //For example, all video, audio, and subtitle tracks for a movie would be grouped under this and be given the name of the movie. \r
-               //All tracks for a particular CD would be grouped together under the title of the CD, or if all tracks for a CD were recorded as a single track, seperated by chapters, the same would apply.\r
-               //You could use this to label episode 3 of The Simpsons. This is akin to the TALB tag in ID3.\r
-       KaxTagMultiTitleType_SetTitle,  //This would be used to label a set of ID 2. For example, season 13 of The Simpsons.\r
-       KaxTagMultiTitleType_Series  //This would be used to label a set of ID 3. For example, The Simpsons.\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagMultiComment)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiCommentName)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiCommentComments)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiCommentLanguage)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagMultiCommercial)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagCommercial)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagMultiCommercialType)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiCommercialAddress)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiCommercialURL)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiCommercialEmail)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagMultiPrice)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiPriceCurrency)\r
-};\r
-\r
-DECLARE_MKX_FLOAT(KaxTagMultiPriceAmount)\r
-};\r
-\r
-DECLARE_MKX_DATE(KaxTagMultiPricePriceDate)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagMultiDate)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagDate)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagMultiDateType)\r
-};\r
-\r
-DECLARE_MKX_DATE(KaxTagMultiDateDateBegin)\r
-};\r
-\r
-DECLARE_MKX_DATE(KaxTagMultiDateDateEnd)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagMultiEntity)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagEntity)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagMultiEntityType)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiEntityName)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiEntityAddress)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiEntityURL)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiEntityEmail)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagMultiIdentifier)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagIdentifier)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagMultiIdentifierType)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagMultiIdentifierBinary)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiIdentifierString)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagMultiLegal)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagLegal)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagMultiLegalType)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiLegalContent)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiLegalURL)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiLegalAddress)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagMultiTitle)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagTitle)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagMultiTitleType)\r
-};\r
-\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiTitleName)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiTitleSubTitle)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiTitleEdition)\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxTagMultiTitleAddress)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiTitleURL)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiTitleEmail)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagMultiTitleLanguage)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagMultiAttachment)\r
-};\r
-\r
-DECLARE_MKX_MASTER(KaxTagAttachment)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagAttachmentID)\r
-};\r
-\r
-#if 0\r
-DECLARE_MKX_FLOAT(KaxTagBPM)\r
-};\r
-\r
-DECLARE_MKX_SINTEGER(KaxTagPopularimeter)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagRating)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxTagSetPart)\r
-};\r
-\r
-DECLARE_MKX_STRING(KaxTagUserDefinedURL)\r
-};\r
-\r
-DECLARE_MKX_BINARY(KaxTagVideoSecondaryGenre)\r
-       public:\r
-               virtual bool ValidateSize() const {return (Size >= 4);\r
-};\r
-\r
-DECLARE_MKX_UNISTRING(KaxWritingApp)\r
-};\r
-#endif\r
-\r
-END_LIBMATROSKA_NAMESPACE\r
-\r
-#endif // LIBMATROSKA_TAGMULTI_H\r
+/****************************************************************************
+** libmatroska : parse Matroska files, see http://www.matroska.org/
+**
+** <file/class MATROSKA_DLL_API description>
+**
+** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.
+**
+** This file is part of libmatroska.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License as published by the Free Software Foundation; either
+** version 2.1 of the License, or (at your option) any later version.
+** 
+** This library 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
+** Lesser General Public License for more details.
+** 
+** You should have received a copy of the GNU Lesser General Public
+** License along with this library; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+**
+** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
+** Contact license@matroska.org if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+/*!
+       \file
+       \version \$Id$
+       \author Jory Stone     <jcsston @ toughguy.net>
+       \author Steve Lhomme   <robux4 @ users.sf.net>
+*/
+#ifndef LIBMATROSKA_TAGMULTI_H
+#define LIBMATROSKA_TAGMULTI_H
+
+#include "matroska/KaxTypes.h"
+#include "ebml/EbmlMaster.h"
+#include "ebml/EbmlDate.h"
+#include "ebml/EbmlFloat.h"
+#include "ebml/EbmlSInteger.h"
+#include "ebml/EbmlUInteger.h"
+#include "ebml/EbmlString.h"
+#include "ebml/EbmlUnicodeString.h"
+#include "ebml/EbmlBinary.h"
+#include "matroska/KaxDefines.h"
+
+using namespace LIBEBML_NAMESPACE;
+
+START_LIBMATROSKA_NAMESPACE
+
+enum KaxTagMultiCommercialTypes {
+       KaxTagMultiCommercialType_FilePurchase = 1, //Information on where to purchase this file. This is akin to the WPAY tag in ID3.
+       KaxTagMultiCommercialType_ItemPurchase, //Information on where to purchase this album. This is akin to the WCOM tag in ID3.
+       KaxTagMultiCommercialType_Owner  //Information on the purchase that occurred for this file. This is akin to the OWNE tag in ID3.
+};
+enum KaxTagMultiDateTypes {
+       KaxTagMultiDateType_EncodingDate = 1, //The time that the encoding of this item was completed. This is akin to the TDEN tag in ID3.
+       KaxTagMultiDateType_RecordingDate, //The time that the recording began, and finished. This is akin to the TDRC tag in ID3.
+       KaxTagMultiDateType_ReleaseDate, //The time that the item was originaly released. This is akin to the TDRL tag in ID3.
+       KaxTagMultiDateType_OriginalReleaseDate, //The time that the item was originaly released if it is a remake. This is akin to the TDOR tag in ID3.
+       KaxTagMultiDateType_TaggingDate, //The time that the tags were done for this item. This is akin to the TDTG tag in ID3.
+       KaxTagMultiDateType_DigitizingDate  //The time that the item was tranfered to a digital medium. This is akin to the IDIT tag in RIFF
+};
+enum KaxTagMultiEntitiesTypes {
+       KaxTagMultiEntitiesType_LyricistTextWriter = 1, //The person that wrote the words/script for this item. This is akin to the TEXT tag in ID3.
+       KaxTagMultiEntitiesType_Composer, //The name of the composer of this item. This is akin to the TCOM tag in ID3.
+       KaxTagMultiEntitiesType_LeadPerformerSoloist, //This is akin to the TPE1 tag in ID3.
+       KaxTagMultiEntitiesType_BandOrchestraAccompaniment, //This is akin to the TPE2 tag in ID3.
+       KaxTagMultiEntitiesType_OriginalLyricistTextWriter, //This is akin to the TOLY tag in ID3.
+       KaxTagMultiEntitiesType_OriginalArtistPerformer, //This is akin to the TOPE tag in ID3.
+       KaxTagMultiEntitiesType_OriginalAlbumMovieShowTitle, //This is akin to the TOAL tag in ID3.
+       KaxTagMultiEntitiesType_ConductorPerformerRefinement, //This is akin to the TPE3 tag in ID3.
+       KaxTagMultiEntitiesType_InterpretedRemixedBy, //This is akin to the TPE4 tag in ID3.
+       KaxTagMultiEntitiesType_Director, //This is akin to the IART tag in RIFF
+       KaxTagMultiEntitiesType_ProducedBy, //This is akin to the IPRO tag in Extended RIFF
+       KaxTagMultiEntitiesType_Cinematographer, //This is akin to the ICNM tag in Extended RIFF
+       KaxTagMultiEntitiesType_ProductionDesigner, //This is akin to the IPDS tag in Extended RIFF
+       KaxTagMultiEntitiesType_CostumeDesigner, //This is akin to the ICDS tag in Extended RIFF
+       KaxTagMultiEntitiesType_ProductionStudio, //This is akin to the ISTD tag in Extended RIFF
+       KaxTagMultiEntitiesType_DistributedBy, //This is akin to the IDST tag in Extended RIFF
+       KaxTagMultiEntitiesType_CommissionedBy, //This is akin to the ICMS tag in RIFF
+       KaxTagMultiEntitiesType_Engineer, //This is akin to the IENG tag in RIFF
+       KaxTagMultiEntitiesType_EditedBy, //This is akin to the IEDT tag in Extended RIFF
+       KaxTagMultiEntitiesType_EncodedBy, //This is akin to the TENC tag in ID3.
+       KaxTagMultiEntitiesType_RippedBy, //This is akin to the IRIP tag in Extended RIFF
+       KaxTagMultiEntitiesType_InvolvedPeopleList, //A very general tag for everyone else that wants to be listed. This is akin to the TMCL tag in ID3.
+       KaxTagMultiEntitiesType_InternetRadioStationName, //This is akin to the TSRN tag in ID3.
+       KaxTagMultiEntitiesType_Publisher  //This is akin to the TPUB tag in ID3.
+};
+
+enum KaxTagMultiIdentifierTypes {
+       KaxTagMultiIdentifierType_ISRC = 1, //String, The International Standard Recording Code
+       KaxTagMultiIdentifierType_CDIdentifier, //Binary, This is a binary dump of the TOC of the CDROM that this item was taken from. This holds the same information as the MCDI in ID3.
+       KaxTagMultiIdentifierType_ISBN, //String, International Standard Book Number
+       KaxTagMultiIdentifierType_Catalog, //String, sometimes the EAN/UPC, often some letters followed by some numbers
+       KaxTagMultiIdentifierType_EAN, //String, EAN-13 bar code identifier
+       KaxTagMultiIdentifierType_UPC, //String, UPC-A bar code identifier
+       KaxTagMultiIdentifierType_LabelCode, //String, Typically printed as ________ (LC) xxxx) ~~~~~~~~ or _________ (LC) 0xxxx) ~~~~~~~~~ on CDs medias or covers, where xxxx is a 4-digit number.
+       KaxTagMultiIdentifierType_LCCN, //String, Library of Congress Control Number
+       KaxTagMultiIdentifierType_UniqueFileIdentifier, //Binary, This used for a dump of the UFID field in ID3. This field would only be used if the item was pulled from an MP3.
+       CDROM_CD_TEXT_PACK_TOC_INFO2  //Binary
+};
+
+enum KaxTagMultiLegalTypes {
+       KaxTagMultiLegalType_Copyright = 1, //The copyright information as per the copyright holder. This is akin to the TCOP tag in ID3.
+       KaxTagMultiLegalType_ProductionCopyright, //The copyright information as per the production copyright holder. This is akin to the TPRO tag in ID3.
+       KaxTagMultiLegalType_TermsOfUse  //The terms of use for this item. This is akin to the USER tag in ID3.
+};
+
+enum KaxTagMultiTitleTypes {
+       KaxTagMultiTitleType_TrackTitle = 1,
+               //The title of this item. In the case of a track, the Name element should be identical to the Name element.
+               //For example, for music you might label this "Canon in D", or for video's audio track you might use "English 5.1" This is akin to the TIT2 tag in ID3.
+       KaxTagMultiTitleType_AlbumMovieShowTitle,
+               //This is the name given to a grouping of tracks and/or chapters. 
+               //For example, all video, audio, and subtitle tracks for a movie would be grouped under this and be given the name of the movie. 
+               //All tracks for a particular CD would be grouped together under the title of the CD, or if all tracks for a CD were recorded as a single track, seperated by chapters, the same would apply.
+               //You could use this to label episode 3 of The Simpsons. This is akin to the TALB tag in ID3.
+       KaxTagMultiTitleType_SetTitle,  //This would be used to label a set of ID 2. For example, season 13 of The Simpsons.
+       KaxTagMultiTitleType_Series  //This would be used to label a set of ID 3. For example, The Simpsons.
+};
+
+DECLARE_MKX_MASTER(KaxTagMultiComment)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiCommentName)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiCommentComments)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiCommentLanguage)
+};
+
+DECLARE_MKX_MASTER(KaxTagMultiCommercial)
+};
+
+DECLARE_MKX_MASTER(KaxTagCommercial)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagMultiCommercialType)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiCommercialAddress)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiCommercialURL)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiCommercialEmail)
+};
+
+DECLARE_MKX_MASTER(KaxTagMultiPrice)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiPriceCurrency)
+};
+
+DECLARE_MKX_FLOAT(KaxTagMultiPriceAmount)
+};
+
+DECLARE_MKX_DATE(KaxTagMultiPricePriceDate)
+};
+
+DECLARE_MKX_MASTER(KaxTagMultiDate)
+};
+
+DECLARE_MKX_MASTER(KaxTagDate)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagMultiDateType)
+};
+
+DECLARE_MKX_DATE(KaxTagMultiDateDateBegin)
+};
+
+DECLARE_MKX_DATE(KaxTagMultiDateDateEnd)
+};
+
+DECLARE_MKX_MASTER(KaxTagMultiEntity)
+};
+
+DECLARE_MKX_MASTER(KaxTagEntity)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagMultiEntityType)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiEntityName)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiEntityAddress)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiEntityURL)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiEntityEmail)
+};
+
+DECLARE_MKX_MASTER(KaxTagMultiIdentifier)
+};
+
+DECLARE_MKX_MASTER(KaxTagIdentifier)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagMultiIdentifierType)
+};
+
+DECLARE_MKX_BINARY(KaxTagMultiIdentifierBinary)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiIdentifierString)
+};
+
+DECLARE_MKX_MASTER(KaxTagMultiLegal)
+};
+
+DECLARE_MKX_MASTER(KaxTagLegal)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagMultiLegalType)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiLegalContent)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiLegalURL)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiLegalAddress)
+};
+
+DECLARE_MKX_MASTER(KaxTagMultiTitle)
+};
+
+DECLARE_MKX_MASTER(KaxTagTitle)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagMultiTitleType)
+};
+
+
+DECLARE_MKX_UNISTRING(KaxTagMultiTitleName)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiTitleSubTitle)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiTitleEdition)
+};
+
+DECLARE_MKX_UNISTRING(KaxTagMultiTitleAddress)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiTitleURL)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiTitleEmail)
+};
+
+DECLARE_MKX_STRING(KaxTagMultiTitleLanguage)
+};
+
+DECLARE_MKX_MASTER(KaxTagMultiAttachment)
+};
+
+DECLARE_MKX_MASTER(KaxTagAttachment)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagAttachmentID)
+};
+
+#if 0
+DECLARE_MKX_FLOAT(KaxTagBPM)
+};
+
+DECLARE_MKX_SINTEGER(KaxTagPopularimeter)
+};
+
+DECLARE_MKX_BINARY(KaxTagRating)
+};
+
+DECLARE_MKX_UINTEGER(KaxTagSetPart)
+};
+
+DECLARE_MKX_STRING(KaxTagUserDefinedURL)
+};
+
+DECLARE_MKX_BINARY(KaxTagVideoSecondaryGenre)
+       public:
+               virtual bool ValidateSize() const {return IsFiniteSize() && (Size >= 4);
+};
+
+DECLARE_MKX_UNISTRING(KaxWritingApp)
+};
+#endif
+
+END_LIBMATROSKA_NAMESPACE
+
+#endif // LIBMATROSKA_TAGMULTI_H
index 3df83d0ad0443e18479f179fd0751bf7d9b172a8..f4ec47c0c34674e519184c78d4b59338caf39866 100644 (file)
-/****************************************************************************\r
-** libmatroska : parse Matroska files, see http://www.matroska.org/\r
-**\r
-** <file/class MATROSKA_DLL_API description>\r
-**\r
-** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.\r
-**\r
-** This file is part of libmatroska.\r
-**\r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-** \r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-** Lesser General Public License for more details.\r
-** \r
-** You should have received a copy of the GNU Lesser General Public\r
-** License along with this library; if not, write to the Free Software\r
-** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-**\r
-** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**\r
-** Contact license@matroska.org if any conditions of this licensing are\r
-** not clear to you.\r
-**\r
-**********************************************************************/\r
-\r
-/*!\r
-       \file\r
-       \version \$Id: KaxTrackVideo.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $\r
-       \author Steve Lhomme     <robux4 @ users.sf.net>\r
-*/\r
-#ifndef LIBMATROSKA_TRACK_VIDEO_H\r
-#define LIBMATROSKA_TRACK_VIDEO_H\r
-\r
-#include "matroska/KaxTypes.h"\r
-#include "ebml/EbmlMaster.h"\r
-#include "ebml/EbmlUInteger.h"\r
-#include "ebml/EbmlBinary.h"\r
-#include "ebml/EbmlFloat.h"\r
-#include "matroska/KaxDefines.h"\r
-\r
-using namespace LIBEBML_NAMESPACE;\r
-\r
-START_LIBMATROSKA_NAMESPACE\r
-\r
-DECLARE_MKX_MASTER(KaxTrackVideo)\r
-};\r
-\r
-#if MATROSKA_VERSION >= 2\r
-DECLARE_MKX_UINTEGER(KaxVideoFlagInterlaced)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoStereoMode)\r
-};\r
-#endif // MATROSKA_VERSION\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoPixelWidth)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoPixelHeight)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoPixelCropBottom)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoPixelCropTop)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoPixelCropLeft)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoPixelCropRight)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoDisplayWidth)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoDisplayHeight)\r
-};\r
-\r
-#if MATROSKA_VERSION >= 2\r
-DECLARE_MKX_UINTEGER(KaxVideoDisplayUnit)\r
-};\r
-\r
-DECLARE_MKX_UINTEGER(KaxVideoAspectRatio)\r
-};\r
-#endif // MATROSKA_VERSION\r
-\r
-DECLARE_MKX_BINARY(KaxVideoColourSpace)\r
-       public:\r
-        bool ValidateSize(void) const {return (GetSize() == 4);}\r
-};\r
-\r
-#if MATROSKA_VERSION >= 2\r
-DECLARE_MKX_FLOAT(KaxVideoGamma)\r
-};\r
-#endif // MATROSKA_VERSION\r
-\r
-DECLARE_MKX_FLOAT(KaxVideoFrameRate)\r
-       public:\r
-               filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);\r
-};\r
-\r
-\r
-END_LIBMATROSKA_NAMESPACE\r
-\r
-#endif // LIBMATROSKA_TRACK_VIDEO_H\r
+/****************************************************************************
+** libmatroska : parse Matroska files, see http://www.matroska.org/
+**
+** <file/class MATROSKA_DLL_API description>
+**
+** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.
+**
+** This file is part of libmatroska.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License as published by the Free Software Foundation; either
+** version 2.1 of the License, or (at your option) any later version.
+** 
+** This library 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
+** Lesser General Public License for more details.
+** 
+** You should have received a copy of the GNU Lesser General Public
+** License along with this library; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+**
+** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
+** Contact license@matroska.org if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+/*!
+       \file
+       \version \$Id$
+       \author Steve Lhomme     <robux4 @ users.sf.net>
+*/
+#ifndef LIBMATROSKA_TRACK_VIDEO_H
+#define LIBMATROSKA_TRACK_VIDEO_H
+
+#include "matroska/KaxTypes.h"
+#include "ebml/EbmlMaster.h"
+#include "ebml/EbmlUInteger.h"
+#include "ebml/EbmlBinary.h"
+#include "ebml/EbmlFloat.h"
+#include "matroska/KaxDefines.h"
+
+using namespace LIBEBML_NAMESPACE;
+
+START_LIBMATROSKA_NAMESPACE
+
+DECLARE_MKX_MASTER(KaxTrackVideo)
+};
+
+#if MATROSKA_VERSION >= 2
+DECLARE_MKX_UINTEGER(KaxVideoFlagInterlaced)
+};
+
+DECLARE_MKX_UINTEGER(KaxVideoStereoMode)
+};
+#endif // MATROSKA_VERSION
+
+DECLARE_MKX_UINTEGER(KaxVideoPixelWidth)
+};
+
+DECLARE_MKX_UINTEGER(KaxVideoPixelHeight)
+};
+
+DECLARE_MKX_UINTEGER(KaxVideoPixelCropBottom)
+};
+
+DECLARE_MKX_UINTEGER(KaxVideoPixelCropTop)
+};
+
+DECLARE_MKX_UINTEGER(KaxVideoPixelCropLeft)
+};
+
+DECLARE_MKX_UINTEGER(KaxVideoPixelCropRight)
+};
+
+DECLARE_MKX_UINTEGER(KaxVideoDisplayWidth)
+};
+
+DECLARE_MKX_UINTEGER(KaxVideoDisplayHeight)
+};
+
+#if MATROSKA_VERSION >= 2
+DECLARE_MKX_UINTEGER(KaxVideoDisplayUnit)
+};
+
+DECLARE_MKX_UINTEGER(KaxVideoAspectRatio)
+};
+#endif // MATROSKA_VERSION
+
+DECLARE_MKX_BINARY(KaxVideoColourSpace)
+       public:
+        bool ValidateSize(void) const {return IsFiniteSize() && (GetSize() == 4);}
+};
+
+#if MATROSKA_VERSION >= 2
+DECLARE_MKX_FLOAT(KaxVideoGamma)
+};
+#endif // MATROSKA_VERSION
+
+DECLARE_MKX_FLOAT(KaxVideoFrameRate)
+       public:
+               filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
+};
+
+
+END_LIBMATROSKA_NAMESPACE
+
+#endif // LIBMATROSKA_TRACK_VIDEO_H