-/****************************************************************************
-** libmatroska : parse Matroska files, see http://www.matroska.org/
-**
-** <file/class description>
-**
-** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
-**
-** 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: KaxDefines.h,v 1.8 2010/04/02 23:26:17 robux4 Exp $
- \author Steve Lhomme <robux4 @ users.sf.net>
-*/
-#ifndef LIBMATROSKA_DEFINES_H
-#define LIBMATROSKA_DEFINES_H
-
-#include "ebml/EbmlVersion.h"
-#include "ebml/EbmlElement.h"
-
-#if LIBEBML_VERSION >= 0x010000
-#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_UINTEGER(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_SINTEGER(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_STRING(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_UNISTRING(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_BINARY(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_FLOAT(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_DATE(a,b,c,d,e,*GetKaxGlobal_Context)
-#else
-#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context)
-#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context)
-#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
-#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
-#endif
-
-#endif // LIBMATROSKA_DEFINES_H
+/****************************************************************************\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 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: KaxDefines.h,v 1.8 2010/04/02 23:26:17 robux4 Exp $\r
+ \author Steve Lhomme <robux4 @ users.sf.net>\r
+*/\r
+#ifndef LIBMATROSKA_DEFINES_H\r
+#define LIBMATROSKA_DEFINES_H\r
+\r
+#include "ebml/EbmlVersion.h"\r
+#include "ebml/EbmlElement.h"\r
+\r
+#if LIBEBML_VERSION >= 0x010000\r
+#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_UINTEGER(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_SINTEGER(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_STRING(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_UNISTRING(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_BINARY(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_FLOAT(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_DATE(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#else\r
+#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_MASTER_NOBODY(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) \\r
+ a::a() :EbmlMaster(Context_##a) {}\r
+\r
+#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#endif\r
+\r
+#endif // LIBMATROSKA_DEFINES_H\r
#endif // MATROSKA_VERSION\r
};\r
\r
-DEFINE_MKX_MASTER (KaxAttached, 0x61A7, 2, KaxAttachments, "AttachedFile");\r
+DEFINE_MKX_MASTER_NOBODY(KaxAttached, 0x61A7, 2, KaxAttachments, "AttachedFile");\r
DEFINE_MKX_UNISTRING(KaxFileDescription, 0x467E, 2, KaxAttachments, "FileDescription");\r
DEFINE_MKX_UNISTRING(KaxFileName, 0x466E, 2, KaxAttachments, "FileName");\r
DEFINE_MKX_STRING (KaxMimeType, 0x4660, 2, KaxAttachments, "FileMimeType");\r
#endif\r
\r
KaxAttached::KaxAttached()\r
- :EbmlMaster(KaxAttached_Context)\r
+ :EbmlMaster(Context_KaxAttached)\r
{\r
SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)\r
}\r
EbmlSemantic(true, false, EBML_INFO(KaxAttached)), ///< EBMLVersion\r
};\r
\r
-DEFINE_MKX_MASTER(KaxAttachments, 0x1941A469, 4, KaxSegment, "Attachments");\r
+DEFINE_MKX_MASTER_NOBODY(KaxAttachments, 0x1941A469, 4, KaxSegment, "Attachments");\r
\r
KaxAttachments::KaxAttachments()\r
- :EbmlMaster(KaxAttachments_Context)\r
+ :EbmlMaster(Context_KaxAttachments)\r
{\r
SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)\r
}\r
EbmlSemantic(true, true, EBML_INFO(KaxBlockAdditional))\r
};\r
\r
-DEFINE_MKX_MASTER (KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup");\r
+DEFINE_MKX_MASTER_NOBODY(KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup");\r
DEFINE_MKX_BINARY (KaxBlock, 0xA1, 1, KaxBlockGroup, "Block");\r
DEFINE_MKX_UINTEGER(KaxBlockDuration, 0x9B, 1, KaxBlockGroup, "BlockDuration");\r
#if MATROSKA_VERSION >= 2\r
,ParentTrack(NULL)\r
{}\r
\r
-KaxBlockAdditions::KaxBlockAdditions()\r
- :EbmlMaster(Context_KaxBlockAdditions)\r
-{}\r
-\r
-KaxBlockMore::KaxBlockMore()\r
- :EbmlMaster(Context_KaxBlockMore)\r
-{}\r
-\r
/*!\r
\todo handle flags\r
\todo hardcoded limit of the number of frames in a lace should be a parameter\r
#endif\r
\r
\r
-KaxSlices::KaxSlices()\r
- :EbmlMaster(Context_KaxSlices)\r
-{}\r
-\r
-KaxTimeSlice::KaxTimeSlice()\r
- :EbmlMaster(Context_KaxTimeSlice)\r
-{}\r
-\r
const KaxBlockBlob & KaxReferenceBlock::RefBlock() const\r
{\r
assert(RefdBlock != NULL);\r
DEFINE_MKX_UINTEGER (KaxChapterProcessTime, 0x6922, 2, KaxChapterProcessCommand, "ChapterProcessTime");\r
DEFINE_MKX_BINARY (KaxChapterProcessData, 0x6933, 2, KaxChapterProcessCommand, "ChapterProcessData");\r
\r
-\r
-KaxChapters::KaxChapters()\r
- :EbmlMaster(Context_KaxChapters)\r
-{}\r
-\r
-KaxEditionEntry::KaxEditionEntry()\r
-:EbmlMaster(Context_KaxEditionEntry)\r
-{}\r
-\r
-KaxChapterAtom::KaxChapterAtom()\r
-:EbmlMaster(Context_KaxChapterAtom)\r
-{}\r
-\r
-KaxChapterTrack::KaxChapterTrack()\r
-:EbmlMaster(Context_KaxChapterTrack)\r
-{}\r
-\r
-KaxChapterDisplay::KaxChapterDisplay()\r
-:EbmlMaster(Context_KaxChapterDisplay)\r
-{}\r
-\r
-KaxChapterProcess::KaxChapterProcess()\r
-:EbmlMaster(Context_KaxChapterProcess)\r
-{}\r
-\r
-KaxChapterProcessCommand::KaxChapterProcessCommand()\r
-:EbmlMaster(Context_KaxChapterProcessCommand)\r
-{}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
EbmlSemantic(false, true, EBML_INFO(KaxClusterPosition)),\r
};\r
\r
-DEFINE_MKX_MASTER(KaxCluster, 0x1F43B675, 4, KaxSegment, "Cluster");\r
+DEFINE_MKX_MASTER_NOBODY(KaxCluster, 0x1F43B675, 4, KaxSegment, "Cluster");\r
\r
KaxCluster::KaxCluster()\r
- :EbmlMaster(KaxCluster_Context)\r
+ :EbmlMaster(Context_KaxCluster)\r
,currentNewBlock(NULL)\r
,ParentSegment(NULL)\r
,bFirstFrameInside(false)\r
DEFINE_MKX_UINTEGER(KaxClusterPosition, 0xA7, 1, KaxCluster, "ClusterPosition");\r
DEFINE_MKX_UINTEGER(KaxClusterPrevSize, 0xAB, 1, KaxCluster, "ClusterPrevSize");\r
\r
-KaxClusterSilentTracks::KaxClusterSilentTracks()\r
-:EbmlMaster(Context_KaxClusterSilentTracks)\r
-{}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
DEFINE_MKX_UINTEGER(KaxContentSigAlgo, 0x47e5, 2, KaxContentEncryption, "ContentSigAlgo");\r
DEFINE_MKX_UINTEGER(KaxContentSigHashAlgo, 0x47e6, 2, KaxContentEncryption, "ContentSigHashAlgo");\r
\r
-KaxContentEncodings::KaxContentEncodings():\r
- EbmlMaster(Context_KaxContentEncodings) {\r
-}\r
-\r
-KaxContentEncoding::KaxContentEncoding():\r
- EbmlMaster(Context_KaxContentEncoding) {\r
-}\r
-\r
-KaxContentCompression::KaxContentCompression():\r
- EbmlMaster(Context_KaxContentCompression) {\r
-}\r
-\r
-KaxContentEncryption::KaxContentEncryption():\r
- EbmlMaster(Context_KaxContentEncryption) {\r
-}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
\r
DEFINE_MKX_MASTER(KaxCues, 0x1C53BB6B, 4, KaxSegment, "Cues");\r
\r
-KaxCues::KaxCues()\r
- :EbmlMaster(KaxCues_Context)\r
-{}\r
-\r
KaxCues::~KaxCues()\r
{\r
assert(myTempReferences.size() == 0); // otherwise that means you have added references and forgot to set the position\r
DEFINE_MKX_UINTEGER(KaxCueRefCodecState, 0xEB, 1, KaxCueRefTime, "CueRefCodecState");\r
#endif\r
\r
-KaxCuePoint::KaxCuePoint() \r
- :EbmlMaster(Context_KaxCuePoint)\r
-{}\r
-\r
-KaxCueTrackPositions::KaxCueTrackPositions()\r
- :EbmlMaster(Context_KaxCueTrackPositions)\r
-{}\r
-\r
-#if MATROSKA_VERSION >= 2\r
-KaxCueReference::KaxCueReference()\r
- :EbmlMaster(Context_KaxCueReference)\r
-{}\r
-#endif // MATROSKA_VERSION\r
-\r
/*!\r
\todo handle codec state checking\r
\todo remove duplicate references (reference to 2 frames that each reference the same frame)\r
DEFINE_MKX_UNISTRING(KaxMuxingApp, 0x4D80, 2, KaxInfo, "MuxingApp");\r
DEFINE_MKX_UNISTRING(KaxWritingApp, 0x5741, 2, KaxInfo, "WritingApp");\r
\r
-KaxInfo::KaxInfo()\r
- :EbmlMaster(KaxInfo_Context)\r
-{}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
DEFINE_MKX_DATE (KaxDateUTC, 0x4461, 2, KaxInfo, "DateUTC");\r
DEFINE_MKX_UNISTRING(KaxTitle, 0x7BA9, 2, KaxInfo, "Title");\r
\r
-KaxChapterTranslate::KaxChapterTranslate()\r
- :EbmlMaster(Context_KaxChapterTranslate)\r
-{}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
DEFINE_MKX_BINARY (KaxSeekID, 0x53AB, 2, KaxSeek, "SeekID");\r
DEFINE_MKX_UINTEGER(KaxSeekPosition, 0x53AC, 2, KaxSeek, "SeekPosition");\r
\r
-KaxSeekHead::KaxSeekHead()\r
- :EbmlMaster(Context_KaxSeekHead)\r
-{}\r
-\r
-KaxSeek::KaxSeek()\r
- :EbmlMaster(Context_KaxSeek)\r
-{}\r
-\r
/*!\r
\todo verify that the element is not already in the list\r
*/\r
DEFINE_MKX_UNISTRING(KaxTagString, 0x4487, 2, KaxTagSimple, "TagString");\r
DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, 2, KaxTagSimple, "TagBinary");\r
\r
-KaxTag::KaxTag()\r
- :EbmlMaster(Context_KaxTag)\r
-{}\r
-\r
-KaxTagTargets::KaxTagTargets()\r
- :EbmlMaster(Context_KaxTagTargets)\r
-{}\r
-\r
-KaxTagGeneral::KaxTagGeneral()\r
- :EbmlMaster(Context_KaxTagGeneral)\r
-{}\r
-\r
-KaxTagGenres::KaxTagGenres()\r
- :EbmlMaster(Context_KaxTagGenres)\r
-{}\r
-\r
-KaxTagAudioSpecific::KaxTagAudioSpecific()\r
- :EbmlMaster(Context_KaxTagAudioSpecific)\r
-{}\r
-\r
-KaxTagImageSpecific::KaxTagImageSpecific()\r
- :EbmlMaster(Context_KaxTagImageSpecific)\r
-{}\r
-\r
-KaxTagSimple::KaxTagSimple()\r
- :EbmlMaster(Context_KaxTagSimple)\r
-{}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
return Context_KaxTagMultiGlobal;\r
}\r
\r
+#define DEFINE_TAG_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxTagsGlobal_Context) \\r
+ a::a() :EbmlMaster(Context_##a) {}\r
+\r
+\r
\r
DEFINE_MKX_MASTER (KaxTagMultiComment, 0x5B7B, 2, KaxTag, "MultiComment");\r
DEFINE_MKX_STRING (KaxTagMultiCommentName, 0x5F7D, 2, KaxTagMultiComment, "MultiCommentName");\r
DEFINE_MKX_UNISTRING(KaxTagMultiCommentComments, 0x5F7C, 2, KaxTagMultiComment, "MultiCommentComments");\r
DEFINE_MKX_STRING (KaxTagMultiCommentLanguage, 0x22B59D, 3, KaxTagMultiComment, "MultiCommentLanguage");\r
\r
-DEFINE_xxx_MASTER (KaxTagMultiCommercial, 0x4DC7, 2, KaxTag, "MultiCommercial", GetKaxTagsGlobal_Context);\r
-DEFINE_xxx_MASTER (KaxTagCommercial, 0x4EC7, 2, KaxTagMultiCommercial, "Commercial", GetKaxTagsGlobal_Context);\r
+DEFINE_TAG_MASTER (KaxTagMultiCommercial, 0x4DC7, 2, KaxTag, "MultiCommercial");\r
+DEFINE_TAG_MASTER (KaxTagCommercial, 0x4EC7, 2, KaxTagMultiCommercial, "Commercial");\r
DEFINE_MKX_UINTEGER (KaxTagMultiCommercialType, 0x5BD7, 2, KaxTagCommercial, "MultiCommercialType");\r
DEFINE_MKX_UNISTRING(KaxTagMultiCommercialAddress, 0x5BBB, 2, KaxTagCommercial, "MultiCommercialAddress");\r
DEFINE_MKX_STRING (KaxTagMultiCommercialURL, 0x5BDA, 2, KaxTagCommercial, "MultiCommercialURL");\r
DEFINE_MKX_STRING (KaxTagMultiCommercialEmail, 0x5BC0, 2, KaxTagCommercial, "MultiCommercialEmail");\r
-DEFINE_xxx_MASTER (KaxTagMultiPrice, 0x5BC3, 2, KaxTagCommercial, "MultiPrice", GetKaxTagsGlobal_Context);\r
+DEFINE_TAG_MASTER (KaxTagMultiPrice, 0x5BC3, 2, KaxTagCommercial, "MultiPrice");\r
DEFINE_MKX_STRING (KaxTagMultiPriceCurrency, 0x5B6C, 2, KaxTagMultiPrice, "MultiPriceCurrency");\r
DEFINE_MKX_FLOAT (KaxTagMultiPriceAmount, 0x5B6E, 2, KaxTagMultiPrice, "MultiPriceAmount");\r
DEFINE_MKX_DATE (KaxTagMultiPricePriceDate, 0x5B6F, 2, KaxTagMultiPrice, "MultiPricePriceDate");\r
\r
-DEFINE_xxx_MASTER (KaxTagMultiDate, 0x4DC8, 2, KaxTag, "MultiDate", GetKaxTagsGlobal_Context);\r
-DEFINE_xxx_MASTER (KaxTagDate, 0x4EC8, 2, KaxTagMultiDate, "Date", GetKaxTagsGlobal_Context);\r
+DEFINE_TAG_MASTER (KaxTagMultiDate, 0x4DC8, 2, KaxTag, "MultiDate");\r
+DEFINE_TAG_MASTER (KaxTagDate, 0x4EC8, 2, KaxTagMultiDate, "Date");\r
DEFINE_MKX_UINTEGER (KaxTagMultiDateType, 0x5BD8, 2, KaxTagDate, "MultiDateType");\r
DEFINE_MKX_DATE (KaxTagMultiDateDateBegin, 0x4460, 2, KaxTagDate, "MultiDateDateBegin");\r
DEFINE_MKX_DATE (KaxTagMultiDateDateEnd, 0x4462, 2, KaxTagDate, "MultiDateDateEnd");\r
\r
-DEFINE_xxx_MASTER (KaxTagMultiEntity, 0x4DC9, 2, KaxTag, "MultiEntity", GetKaxTagsGlobal_Context);\r
-DEFINE_xxx_MASTER (KaxTagEntity, 0x4EC9, 2, KaxTagMultiEntity, "Entity", GetKaxTagsGlobal_Context);\r
+DEFINE_TAG_MASTER (KaxTagMultiEntity, 0x4DC9, 2, KaxTag, "MultiEntity");\r
+DEFINE_TAG_MASTER (KaxTagEntity, 0x4EC9, 2, KaxTagMultiEntity, "Entity");\r
DEFINE_MKX_UINTEGER (KaxTagMultiEntityType, 0x5BD9, 2, KaxTagEntity, "MultiEntityType");\r
DEFINE_MKX_UNISTRING(KaxTagMultiEntityName, 0x5BED, 2, KaxTagEntity, "MultiEntityName");\r
DEFINE_MKX_STRING (KaxTagMultiEntityURL, 0x5BDB, 2, KaxTagEntity, "MultiEntityURL");\r
DEFINE_MKX_STRING (KaxTagMultiEntityEmail, 0x5BC1, 2, KaxTagEntity, "MultiEntityEmail");\r
DEFINE_MKX_UNISTRING(KaxTagMultiEntityAddress, 0x5BDC, 2, KaxTagEntity, "MultiEntityAddress");\r
\r
-DEFINE_xxx_MASTER (KaxTagMultiIdentifier, 0x4DC6, 2, KaxTag, "MultiIdentifier", GetKaxTagsGlobal_Context);\r
-DEFINE_xxx_MASTER (KaxTagIdentifier, 0x4EC6, 2, KaxTagMultiIdentifier, "Identifier", GetKaxTagsGlobal_Context);\r
+DEFINE_TAG_MASTER (KaxTagMultiIdentifier, 0x4DC6, 2, KaxTag, "MultiIdentifier");\r
+DEFINE_TAG_MASTER (KaxTagIdentifier, 0x4EC6, 2, KaxTagMultiIdentifier, "Identifier");\r
DEFINE_MKX_UINTEGER (KaxTagMultiIdentifierType, 0x5BAD, 2, KaxTagIdentifier, "MultiIdentifierType");\r
DEFINE_MKX_BINARY (KaxTagMultiIdentifierBinary, 0x6B67, 2, KaxTagIdentifier, "MultiIdentifierBinary");\r
DEFINE_MKX_UNISTRING(KaxTagMultiIdentifierString, 0x6B68, 2, KaxTagIdentifier, "MultiIdentifierString");\r
\r
-DEFINE_xxx_MASTER (KaxTagMultiLegal, 0x4DC5, 2, KaxTag, "MultiLegal", GetKaxTagsGlobal_Context);\r
-DEFINE_xxx_MASTER (KaxTagLegal, 0x4EC5, 2, KaxTagMultiLegal, "Legal", GetKaxTagsGlobal_Context);\r
+DEFINE_TAG_MASTER (KaxTagMultiLegal, 0x4DC5, 2, KaxTag, "MultiLegal");\r
+DEFINE_TAG_MASTER (KaxTagLegal, 0x4EC5, 2, KaxTagMultiLegal, "Legal");\r
DEFINE_MKX_UINTEGER (KaxTagMultiLegalType, 0x5BBD, 2, KaxTagLegal, "MultiLegalType");\r
DEFINE_MKX_UNISTRING(KaxTagMultiLegalContent, 0x5BB2, 2, KaxTagLegal, "MultiLegalContent");\r
DEFINE_MKX_STRING (KaxTagMultiLegalURL, 0x5B34, 2, KaxTagLegal, "MultiLegalURL");\r
DEFINE_MKX_UNISTRING(KaxTagMultiLegalAddress, 0x5B9B, 2, KaxTagLegal, "MultiLegalAddress");\r
\r
-DEFINE_xxx_MASTER (KaxTagMultiTitle, 0x4DC4, 2, KaxTag, "MultiTitle", GetKaxTagsGlobal_Context);\r
-DEFINE_xxx_MASTER (KaxTagTitle, 0x4EC4, 2, KaxTagMultiTitle, "Title", GetKaxTagsGlobal_Context);\r
+DEFINE_TAG_MASTER (KaxTagMultiTitle, 0x4DC4, 2, KaxTag, "MultiTitle");\r
+DEFINE_TAG_MASTER (KaxTagTitle, 0x4EC4, 2, KaxTagMultiTitle, "Title");\r
DEFINE_MKX_UINTEGER (KaxTagMultiTitleType, 0x5B7D, 2, KaxTagTitle, "MultiTitleType");\r
DEFINE_MKX_UNISTRING(KaxTagMultiTitleName, 0x5BB9, 2, KaxTagTitle, "MultiTitleName");\r
DEFINE_MKX_UNISTRING(KaxTagMultiTitleSubTitle, 0x5B5B, 2, KaxTagTitle, "MultiTitleSubTitle");\r
DEFINE_MKX_STRING (KaxTagMultiTitleEmail, 0x5BC9, 2, KaxTagTitle, "MultiTitleEmail");\r
DEFINE_MKX_STRING (KaxTagMultiTitleLanguage, 0x22B59E, 3, KaxTagTitle, "MultiTitleLanguage");\r
\r
-DEFINE_xxx_MASTER (KaxTagMultiAttachment, 0x4DC3, 2, KaxTag, "MultiAttachment", GetKaxTagsGlobal_Context);\r
-DEFINE_xxx_MASTER (KaxTagAttachment, 0x4EC3, 2, KaxTagMultiAttachment, "Attachment", GetKaxTagsGlobal_Context);\r
+DEFINE_TAG_MASTER (KaxTagMultiAttachment, 0x4DC3, 2, KaxTag, "MultiAttachment");\r
+DEFINE_TAG_MASTER (KaxTagAttachment, 0x4EC3, 2, KaxTagMultiAttachment, "Attachment");\r
DEFINE_MKX_UINTEGER (KaxTagAttachmentID, 0x5BA0, 2, KaxTagAttachment, "AttachmentID");\r
\r
-KaxTagMultiComment::KaxTagMultiComment()\r
- :EbmlMaster(Context_KaxTagMultiComment)\r
-{}\r
-\r
-\r
-KaxTagMultiCommercial::KaxTagMultiCommercial()\r
- :EbmlMaster(Context_KaxTagMultiCommercial)\r
-{}\r
-\r
-KaxTagCommercial::KaxTagCommercial()\r
- :EbmlMaster(Context_KaxTagCommercial)\r
-{}\r
-\r
-KaxTagMultiPrice::KaxTagMultiPrice()\r
- :EbmlMaster(Context_KaxTagMultiPrice)\r
-{}\r
-\r
-KaxTagMultiDate::KaxTagMultiDate()\r
- :EbmlMaster(Context_KaxTagMultiDate)\r
-{}\r
-\r
-KaxTagDate::KaxTagDate()\r
- :EbmlMaster(Context_KaxTagDate)\r
-{}\r
-\r
-KaxTagMultiEntity::KaxTagMultiEntity()\r
- :EbmlMaster(Context_KaxTagMultiEntity)\r
-{}\r
- \r
-KaxTagEntity::KaxTagEntity()\r
- :EbmlMaster(Context_KaxTagEntity)\r
-{}\r
- \r
-KaxTagMultiLegal::KaxTagMultiLegal()\r
- :EbmlMaster(Context_KaxTagMultiLegal)\r
-{}\r
-\r
-KaxTagLegal::KaxTagLegal()\r
- :EbmlMaster(Context_KaxTagLegal)\r
-{}\r
-\r
-KaxTagMultiIdentifier::KaxTagMultiIdentifier()\r
- :EbmlMaster(Context_KaxTagMultiIdentifier)\r
-{}\r
-\r
-KaxTagIdentifier::KaxTagIdentifier()\r
- :EbmlMaster(Context_KaxTagIdentifier)\r
-{}\r
-\r
-KaxTagMultiTitle::KaxTagMultiTitle()\r
- :EbmlMaster(Context_KaxTagMultiTitle)\r
-{}\r
-\r
-KaxTagTitle::KaxTagTitle()\r
- :EbmlMaster(Context_KaxTagTitle)\r
-{}\r
-\r
-KaxTagMultiAttachment::KaxTagMultiAttachment()\r
- :EbmlMaster(Context_KaxTagMultiAttachment)\r
-{}\r
-\r
-KaxTagAttachment::KaxTagAttachment()\r
- :EbmlMaster(Context_KaxTagAttachment)\r
-{}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
\r
DEFINE_MKX_MASTER(KaxTags, 0x1254C367, 4, KaxSegment, "Tags");\r
\r
-KaxTags::KaxTags()\r
- :EbmlMaster(KaxTags_Context)\r
-{}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, 2, KaxTrackAudio, "AudioPosition");\r
#endif\r
\r
-KaxTrackAudio::KaxTrackAudio()\r
- :EbmlMaster(Context_KaxTrackAudio)\r
-{}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
DEFINE_MKX_UINTEGER (KaxCodecDecodeAll, 0xAA, 1, KaxTracks, "CodecDecodeAll");\r
#endif\r
\r
-KaxTrackTranslate::KaxTrackTranslate()\r
- :EbmlMaster(Context_KaxTrackTranslate)\r
-{}\r
-\r
END_LIBMATROSKA_NAMESPACE\r
DEFINE_MKX_FLOAT (KaxVideoGamma, 0x2FB523, 3, KaxTrackVideo, "VideoGamma");\r
#endif\r
\r
-KaxTrackVideo::KaxTrackVideo()\r
- :EbmlMaster(Context_KaxTrackVideo)\r
-{}\r
-\r
filepos_t KaxVideoFrameRate::RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault)\r
{\r
assert(false); // no you are not allowed to use this element !\r
EbmlSemantic(false, true, EBML_INFO(KaxContentEncodings)),\r
};\r
\r
-DEFINE_MKX_MASTER(KaxTracks, 0x1654AE6B, 4, KaxSegment, "Tracks");\r
-DEFINE_MKX_MASTER(KaxTrackEntry, 0xAE, 1, KaxTracks, "TrackEntry");\r
-\r
-KaxTracks::KaxTracks()\r
- :EbmlMaster(KaxTracks_Context)\r
-{}\r
+DEFINE_MKX_MASTER(KaxTracks, 0x1654AE6B, 4, KaxSegment, "Tracks");\r
+DEFINE_MKX_MASTER_NOBODY(KaxTrackEntry, 0xAE, 1, KaxTracks, "TrackEntry");\r
\r
KaxTrackEntry::KaxTrackEntry()\r
- :EbmlMaster(KaxTrackEntry_Context)\r
+ :EbmlMaster(Context_KaxTrackEntry)\r
,bGlobalTimecodeScaleIsSet(false)\r
{}\r
\r