]> granicus.if.org Git - libmatroska/commitdiff
use the new macros to define EBML class elements
authorSteve Lhomme <slhomme@matroska.org>
Sat, 3 Apr 2010 07:55:52 +0000 (07:55 +0000)
committerSteve Lhomme <slhomme@matroska.org>
Sat, 3 Apr 2010 07:55:52 +0000 (07:55 +0000)
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@68 a6f86f6d-0131-4f8e-9e7b-e335508773d5

22 files changed:
libmatroska.proj
matroska/KaxContexts.h
matroska/KaxDefines.h
src/KaxAttached.cpp
src/KaxAttachments.cpp
src/KaxBlock.cpp
src/KaxBlockData.cpp
src/KaxChapters.cpp
src/KaxCluster.cpp
src/KaxClusterData.cpp
src/KaxContentEncoding.cpp
src/KaxCues.cpp
src/KaxCuesData.cpp
src/KaxInfo.cpp
src/KaxInfoData.cpp
src/KaxSeekHead.cpp
src/KaxSegment.cpp
src/KaxTags.cpp
src/KaxTrackAudio.cpp
src/KaxTrackEntryData.cpp
src/KaxTrackVideo.cpp
src/KaxTracks.cpp

index f2fce8100550ff787403692540bc510f908ff6cc..b223979f1d76cbc2ef9f84d23f8dcc158bdd1ab6 100644 (file)
@@ -55,6 +55,7 @@ LIB matroska
   HEADER matroska/KaxContexts.h\r
   HEADER matroska/KaxCues.h\r
   HEADER matroska/KaxCuesData.h\r
+  HEADER matroska/KaxDefines.h\r
   HEADER matroska/KaxInfo.h\r
   HEADER matroska/KaxInfoData.h\r
   HEADER matroska/KaxSeekHead.h\r
index 2624c5426aaa73a5dfd069f37fa192b6658a75ed..9ef36236bfaecbd82e6f2ff8a1b88aef870eb1a3 100644 (file)
@@ -79,6 +79,43 @@ extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDownloadURL_Context;
 extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDecodeAll_Context;\r
 extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackOverlay_Context;\r
 \r
+#define Context_KaxMatroska              KaxMatroska_Context\r
+#define Context_KaxSegment               KaxSegment_Context\r
+#define Context_KaxTrackEntry            KaxTrackEntry_Context\r
+#define Context_KaxTracks                KaxTracks_Context\r
+#define Context_KaxTrackVideo            KaxTrackVideo_Context\r
+#define Context_KaxCluster               KaxCluster_Context\r
+#define Context_KaxBlockMore             KaxBlockMore_Context\r
+#define Context_KaxBlockAdditions        KaxBlockAdditions_Context\r
+#define Context_KaxBlockGroup            KaxBlockGroup_Context\r
+#define Context_KaxTimeSlice             KaxTimeSlice_Context\r
+#define Context_KaxSlices                KaxSlices_Context\r
+#define Context_KaxContentEncoding       KaxContentEncoding_Context\r
+#define Context_KaxContentEncodings      KaxContentEncodings_Context\r
+#define Context_KaxContentCompression    KaxContentCompression_Context\r
+#define Context_KaxContentEncryption     KaxContentEncryption_Context\r
+#define Context_KaxInfo                  KaxInfo_Context\r
+#define Context_KaxChapterTranslate      KaxChapterTranslate_Context\r
+#define Context_KaxTrackAudio            KaxTrackAudio_Context\r
+#define Context_KaxTrackTranslate        KaxTrackTranslate_Context\r
+#define Context_KaxAttached              KaxAttached_Context\r
+#define Context_KaxAttachments           KaxAttachments_Context\r
+#define Context_KaxEditionEntry          KaxEditionEntry_Context\r
+#define Context_KaxChapters              KaxChapters_Context\r
+#define Context_KaxChapterAtom           KaxChapterAtom_Context\r
+#define Context_KaxChapterTrack          KaxChapterTrack_Context\r
+#define Context_KaxChapterDisplay        KaxChapterDisplay_Context\r
+#define Context_KaxChapterProcess        KaxChapterProcess_Context\r
+#define Context_KaxChapterProcessCommand KaxChapterProcessCommand_Context\r
+#define Context_KaxClusterSilentTracks   KaxClusterSilentTracks_Context\r
+#define Context_KaxCues                  KaxCues_Context\r
+#define Context_KaxCuePoint              KaxCuePoint_Context\r
+#define Context_KaxCueTrackPositions     KaxCueTrackPositions_Context\r
+#define Context_KaxCueReference          KaxCueReference_Context\r
+#define Context_KaxSeek                  KaxSeek_Context\r
+#define Context_KaxTags                  KaxTags_Context\r
+#define Context_KaxSeekHead              KaxSeekHead_Context\r
+\r
 extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxGlobal_Context();\r
 extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxTagsGlobal_Context();\r
 \r
index bb36d429968ac7ae04d6f6099cd6dafaab71a995..064f6a802f8724afcf761da484d20421999c4d59 100644 (file)
 #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_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_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
+#define DEFINE_MKX_MASTER(a,b,c,d,e)      DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_MASTER_GLOBAL(a,b,c,d) DEFINE_xxx_MASTER_GLOBAL(a,b,c,d,*GetKaxGlobal_Context)\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
index 69fb1baf7b5fcac34cd5b1461f09987a27124754..ada83c92d6d4036033f5b077c1581a83dd9b8029 100644 (file)
@@ -34,6 +34,7 @@
 */\r
 #include "matroska/KaxAttached.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 // sub elements\r
 \r
@@ -42,9 +43,9 @@ using namespace LIBEBML_NAMESPACE;
 START_LIBMATROSKA_NAMESPACE\r
 \r
 #if MATROSKA_VERSION == 1\r
-EbmlSemantic KaxAttached_ContextList[5] =\r
+static const EbmlSemantic ContextList_KaxAttached[5] =\r
 #else // MATROSKA_VERSION\r
-EbmlSemantic KaxAttached_ContextList[6] =\r
+static const EbmlSemantic ContextList_KaxAttached[6] =\r
 #endif // MATROSKA_VERSION\r
 {\r
        EbmlSemantic(true,  true, EBML_INFO(KaxFileName)),\r
@@ -57,35 +58,15 @@ EbmlSemantic KaxAttached_ContextList[6] =
 #endif // MATROSKA_VERSION\r
 };\r
 \r
-EbmlId KaxAttached_TheId       (0x61A7, 2);\r
-EbmlId KaxFileDescription_TheId(0x467E, 2);\r
-EbmlId KaxFileName_TheId       (0x466E, 2);\r
-EbmlId KaxMimeType_TheId       (0x4660, 2);\r
-EbmlId KaxFileData_TheId       (0x465C, 2);\r
-EbmlId KaxFileUID_TheId        (0x46AE, 2);\r
+DEFINE_MKX_MASTER   (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
+DEFINE_MKX_BINARY   (KaxFileData,        0x465C, 2, KaxAttachments, "FileData");\r
+DEFINE_MKX_UINTEGER (KaxFileUID,         0x46AE, 2, KaxAttachments, "FileUID");\r
 #if MATROSKA_VERSION >= 2\r
-EbmlId KaxFileReferral_TheId   (0x4675, 2);\r
-#endif // MATROSKA_VERSION\r
-\r
-const EbmlSemanticContext KaxAttached_Context = EbmlSemanticContext(countof(KaxAttached_ContextList), KaxAttached_ContextList, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAttached));\r
-const EbmlSemanticContext KaxFileDescription_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileDescription));\r
-const EbmlSemanticContext KaxFileName_Context        = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileName));\r
-const EbmlSemanticContext KaxMimeType_Context        = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxMimeType));\r
-const EbmlSemanticContext KaxFileData_Context        = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileData));\r
-const EbmlSemanticContext KaxFileUID_Context         = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileUID));\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlSemanticContext KaxFileReferral_Context    = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileReferral));\r
-#endif // MATROSKA_VERSION\r
-\r
-const EbmlCallbacks KaxAttached::ClassInfos(KaxAttached::Create, KaxAttached_TheId, "AttachedFile", KaxAttached_Context);\r
-const EbmlCallbacks KaxFileDescription::ClassInfos(KaxFileDescription::Create, KaxFileDescription_TheId, "FileDescription", KaxFileDescription_Context);\r
-const EbmlCallbacks KaxFileName::ClassInfos(KaxFileName::Create, KaxFileName_TheId, "FileName", KaxFileName_Context);\r
-const EbmlCallbacks KaxMimeType::ClassInfos(KaxMimeType::Create, KaxMimeType_TheId, "FileMimeType", KaxMimeType_Context);\r
-const EbmlCallbacks KaxFileData::ClassInfos(KaxFileData::Create, KaxFileData_TheId, "FileData", KaxFileData_Context);\r
-const EbmlCallbacks KaxFileUID::ClassInfos(KaxFileUID::Create, KaxFileUID_TheId, "FileUID", KaxFileUID_Context);\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlCallbacks KaxFileReferral::ClassInfos(KaxFileReferral::Create, KaxFileReferral_TheId, "FileReferral", KaxFileReferral_Context);\r
-#endif // MATROSKA_VERSION\r
+DEFINE_MKX_BINARY   (KaxFileReferral,    0x4675, 2, KaxAttachments, "FileReferral");\r
+#endif\r
 \r
 KaxAttached::KaxAttached()\r
  :EbmlMaster(KaxAttached_Context)\r
index 6d69f0231646b3eda5f35a3b353995565a906566..597522e8faf33f137093ccaf5a1826bf7e9461f7 100644 (file)
 #include "matroska/KaxAttachments.h"\r
 #include "matroska/KaxAttached.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 using namespace LIBEBML_NAMESPACE;\r
 \r
 // sub elements\r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-EbmlSemantic KaxAttachments_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxAttachments[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxAttached)),        ///< EBMLVersion\r
 };\r
 \r
-const EbmlSemanticContext KaxAttachments_Context = EbmlSemanticContext(countof(KaxAttachments_ContextList), KaxAttachments_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAttachments));\r
-\r
-EbmlId KaxAttachments_TheId(0x1941A469, 4);\r
-const EbmlCallbacks KaxAttachments::ClassInfos(KaxAttachments::Create, KaxAttachments_TheId, "Attachments", KaxAttachments_Context);\r
+DEFINE_MKX_MASTER(KaxAttachments, 0x1941A469, 4, KaxSegment, "Attachments");\r
 \r
 KaxAttachments::KaxAttachments()\r
  :EbmlMaster(KaxAttachments_Context)\r
index 08d615b6576e4f14b96deb1c6a1fd99d57b2353a..078ddf99f7cc008cea0aac15a7e744900621109b 100644 (file)
 #include "matroska/KaxContexts.h"\r
 #include "matroska/KaxBlockData.h"\r
 #include "matroska/KaxCluster.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
 #if MATROSKA_VERSION == 1\r
-const EbmlSemantic KaxBlockGroup_ContextList[6] =\r
+static const EbmlSemantic ContextList_KaxBlockGroup[6] =\r
 #else // MATROSKA_VERSION\r
-const EbmlSemantic KaxBlockGroup_ContextList[9] =\r
+static const EbmlSemantic ContextList_KaxBlockGroup[9] =\r
 #endif // MATROSKA_VERSION\r
 {\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxBlock)),\r
@@ -63,55 +64,30 @@ const EbmlSemantic KaxBlockGroup_ContextList[9] =
        EbmlSemantic(false, true,  EBML_INFO(KaxBlockAdditions)),\r
 };\r
 \r
-const EbmlSemantic KaxBlockAdditions_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxBlockAdditions[1] =\r
 {\r
        EbmlSemantic(true,  false,  EBML_INFO(KaxBlockMore))\r
 };\r
 \r
-const EbmlSemantic KaxBlockMore_ContextList[2] =\r
+static const EbmlSemantic ContextList_KaxBlockMore[2] =\r
 {\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxBlockAddID)),\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxBlockAdditional))\r
 };\r
 \r
-EbmlId KaxBlockGroup_TheId     (0xA0, 1);\r
-EbmlId KaxBlock_TheId          (0xA1, 1);\r
-EbmlId KaxSimpleBlock_TheId    (0xA3, 1);\r
-EbmlId KaxBlockDuration_TheId  (0x9B, 1);\r
+DEFINE_MKX_MASTER  (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
-EbmlId KaxBlockVirtual_TheId   (0xA2, 1);\r
-EbmlId KaxCodecState_TheId     (0xA4, 1);\r
-#endif // MATROSKA_VERSION\r
-EbmlId KaxBlockAdditions_TheId (0x75A1, 2);\r
-EbmlId KaxBlockMore_TheId      (0xA6, 1);\r
-EbmlId KaxBlockAddID_TheId     (0xEE, 1);\r
-EbmlId KaxBlockAdditional_TheId(0xA5, 1);\r
-\r
-const EbmlSemanticContext KaxBlockGroup_Context = EbmlSemanticContext(countof(KaxBlockGroup_ContextList), KaxBlockGroup_ContextList, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockGroup));\r
-const EbmlSemanticContext KaxBlock_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlock));\r
-const EbmlSemanticContext KaxBlockDuration_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockDuration));\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlSemanticContext KaxSimpleBlock_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSimpleBlock));\r
-const EbmlSemanticContext KaxBlockVirtual_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockVirtual));\r
-const EbmlSemanticContext KaxCodecState_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecState));\r
-#endif // MATROSKA_VERSION\r
-const EbmlSemanticContext KaxBlockAdditions_Context = EbmlSemanticContext(countof(KaxBlockAdditions_ContextList), KaxBlockAdditions_ContextList, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockAdditions));\r
-const EbmlSemanticContext KaxBlockMore_Context = EbmlSemanticContext(countof(KaxBlockMore_ContextList), KaxBlockMore_ContextList, &KaxBlockAdditions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockMore));\r
-const EbmlSemanticContext KaxBlockAddID_Context = EbmlSemanticContext(0, NULL, &KaxBlockMore_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockAddID));\r
-const EbmlSemanticContext KaxBlockAdditional_Context = EbmlSemanticContext(0, NULL, &KaxBlockMore_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockAdditional));\r
-\r
-const EbmlCallbacks KaxBlockGroup::ClassInfos(KaxBlockGroup::Create, KaxBlockGroup_TheId, "BlockGroup", KaxBlockGroup_Context);\r
-const EbmlCallbacks KaxBlock::ClassInfos(KaxBlock::Create, KaxBlock_TheId, "Block", KaxBlock_Context);\r
-const EbmlCallbacks KaxBlockDuration::ClassInfos(KaxBlockDuration::Create, KaxBlockDuration_TheId, "BlockDuration", KaxBlockDuration_Context);\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlCallbacks KaxSimpleBlock::ClassInfos(KaxSimpleBlock::Create, KaxSimpleBlock_TheId, "SimpleBlock", KaxSimpleBlock_Context);\r
-const EbmlCallbacks KaxBlockVirtual::ClassInfos(KaxBlockVirtual::Create, KaxBlockVirtual_TheId, "BlockVirtual", KaxBlockVirtual_Context);\r
-const EbmlCallbacks KaxCodecState::ClassInfos(KaxCodecState::Create, KaxCodecState_TheId, "CodecState", KaxCodecState_Context);\r
-#endif // MATROSKA_VERSION\r
-const EbmlCallbacks KaxBlockAdditions::ClassInfos(KaxBlockAdditions::Create, KaxBlockAdditions_TheId, "BlockAdditions", KaxBlockAdditions_Context);\r
-const EbmlCallbacks KaxBlockMore::ClassInfos(KaxBlockMore::Create, KaxBlockMore_TheId, "BlockMore", KaxBlockMore_Context);\r
-const EbmlCallbacks KaxBlockAddID::ClassInfos(KaxBlockAddID::Create, KaxBlockAddID_TheId, "BlockAddID", KaxBlockAddID_Context);\r
-const EbmlCallbacks KaxBlockAdditional::ClassInfos(KaxBlockAdditional::Create, KaxBlockAdditional_TheId, "BlockAdditional", KaxBlockAdditional_Context);\r
+DEFINE_MKX_BINARY  (KaxSimpleBlock,      0xA3, 1, KaxCluster, "SimpleBlock");\r
+DEFINE_MKX_BINARY  (KaxBlockVirtual,     0xA2, 1, KaxBlockGroup, "BlockVirtual");\r
+DEFINE_MKX_BINARY  (KaxCodecState,       0xA4, 1, KaxBlockGroup, "CodecState");\r
+#endif\r
+DEFINE_MKX_MASTER  (KaxBlockAdditions, 0x75A1, 2, KaxBlockGroup, "BlockAdditions");\r
+DEFINE_MKX_MASTER  (KaxBlockMore,        0xA6, 1, KaxBlockAdditions, "BlockMore");\r
+DEFINE_MKX_UINTEGER(KaxBlockAddID,       0xEE, 1, KaxBlockMore, "BlockAddID");\r
+DEFINE_MKX_BINARY  (KaxBlockAdditional,  0xA5, 1, KaxBlockMore, "BlockAdditional");\r
+\r
 \r
 DataBuffer * DataBuffer::Clone()\r
 {\r
index 1dd6da43dee1458e1535b1958fc8245fa443a488..8236988f8732a9f20de40d284700fb9bcb294051 100644 (file)
 #include "matroska/KaxBlockData.h"\r
 #include "matroska/KaxContexts.h"\r
 #include "matroska/KaxBlock.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 using namespace LIBEBML_NAMESPACE;\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-const EbmlSemantic KaxSlices_ContextList[1] =\r
+const EbmlSemantic ContextList_KaxSlices[1] =\r
 {\r
        EbmlSemantic(false, false,  EBML_INFO(KaxTimeSlice)),\r
 };\r
 \r
-const EbmlSemantic KaxTimeSlice_ContextList[5] =\r
+const EbmlSemantic ContextList_KaxTimeSlice[5] =\r
 {\r
        EbmlSemantic(false, true,  EBML_INFO(KaxSliceLaceNumber)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxSliceFrameNumber)),\r
@@ -54,44 +55,19 @@ const EbmlSemantic KaxTimeSlice_ContextList[5] =
        EbmlSemantic(false, true,  EBML_INFO(KaxSliceDuration)),\r
 };\r
 \r
-EbmlId KaxReferencePriority_TheId(0xFA, 1);\r
-EbmlId KaxReferenceBlock_TheId   (0xFB, 1);\r
-EbmlId KaxSlices_TheId           (0x8E, 1);\r
-EbmlId KaxTimeSlice_TheId        (0xE8, 1);\r
-EbmlId KaxSliceLaceNumber_TheId  (0xCC, 1);\r
-EbmlId KaxSliceFrameNumber_TheId (0xCD, 1);\r
-EbmlId KaxSliceBlockAddID_TheId  (0xCB, 1);\r
-EbmlId KaxSliceDelay_TheId       (0xCE, 1);\r
-EbmlId KaxSliceDuration_TheId    (0xCF, 1);\r
+DEFINE_MKX_UINTEGER(KaxReferencePriority, 0xFA, 1, KaxBlockGroup, "FlagReferenced");\r
+DEFINE_MKX_SINTEGER(KaxReferenceBlock,    0xFB, 1, KaxBlockGroup, "ReferenceBlock");\r
+DEFINE_MKX_MASTER  (KaxSlices,            0x8E, 1, KaxBlockGroup, "Slices");\r
+DEFINE_MKX_MASTER  (KaxTimeSlice,         0xE8, 1, KaxSlices, "TimeSlice");\r
+DEFINE_MKX_UINTEGER(KaxSliceLaceNumber,   0xCC, 1, KaxTimeSlice, "SliceLaceNumber");\r
+DEFINE_MKX_UINTEGER(KaxSliceFrameNumber,  0xCD, 1, KaxTimeSlice, "SliceFrameNumber");\r
+DEFINE_MKX_UINTEGER(KaxSliceBlockAddID,   0xCB, 1, KaxTimeSlice, "SliceBlockAddID");\r
+DEFINE_MKX_UINTEGER(KaxSliceDelay,        0xCE, 1, KaxTimeSlice, "SliceDelay");\r
+DEFINE_MKX_UINTEGER(KaxSliceDuration,     0xCF, 1, KaxTimeSlice, "SliceDuration");\r
 #if MATROSKA_VERSION >= 2\r
-EbmlId KaxReferenceVirtual_TheId (0xFD, 1);\r
-#endif // MATROSKA_VERSION\r
-\r
-const EbmlSemanticContext KaxReferencePriority_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxReferencePriority));\r
-const EbmlSemanticContext KaxReferenceBlock_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxReferenceBlock));\r
-const EbmlSemanticContext KaxSlices_Context = EbmlSemanticContext(countof(KaxSlices_ContextList), KaxSlices_ContextList, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSlices));\r
-const EbmlSemanticContext KaxTimeSlice_Context = EbmlSemanticContext(countof(KaxTimeSlice_ContextList), KaxTimeSlice_ContextList, &KaxSlices_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTimeSlice));\r
-const EbmlSemanticContext KaxSliceLaceNumber_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceLaceNumber));\r
-const EbmlSemanticContext KaxSliceFrameNumber_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceFrameNumber));\r
-const EbmlSemanticContext KaxSliceBlockAddID_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceBlockAddID));\r
-const EbmlSemanticContext KaxSliceDelay_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceDelay));\r
-const EbmlSemanticContext KaxSliceDuration_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceDuration));\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlSemanticContext KaxReferenceVirtual_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxReferenceVirtual));\r
-#endif // MATROSKA_VERSION\r
-\r
-const EbmlCallbacks KaxReferencePriority::ClassInfos(KaxReferencePriority::Create, KaxReferencePriority_TheId, "FlagReferenced", KaxReferencePriority_Context);\r
-const EbmlCallbacks KaxReferenceBlock::ClassInfos(KaxReferenceBlock::Create, KaxReferenceBlock_TheId, "ReferenceBlock", KaxReferenceBlock_Context);\r
-const EbmlCallbacks KaxSlices::ClassInfos(KaxSlices::Create, KaxSlices_TheId, "Slices", KaxSlices_Context);\r
-const EbmlCallbacks KaxTimeSlice::ClassInfos(KaxTimeSlice::Create, KaxTimeSlice_TheId, "TimeSlice", KaxTimeSlice_Context);\r
-const EbmlCallbacks KaxSliceLaceNumber::ClassInfos(KaxSliceLaceNumber::Create, KaxSliceLaceNumber_TheId, "SliceLaceNumber", KaxSliceLaceNumber_Context);\r
-const EbmlCallbacks KaxSliceFrameNumber::ClassInfos(KaxSliceFrameNumber::Create, KaxSliceFrameNumber_TheId, "SliceFrameNumber", KaxSliceFrameNumber_Context);\r
-const EbmlCallbacks KaxSliceBlockAddID::ClassInfos(KaxSliceBlockAddID::Create, KaxSliceBlockAddID_TheId, "SliceBlockAddID", KaxSliceBlockAddID_Context);\r
-const EbmlCallbacks KaxSliceDelay::ClassInfos(KaxSliceDelay::Create, KaxSliceDelay_TheId, "SliceDelay", KaxSliceDelay_Context);\r
-const EbmlCallbacks KaxSliceDuration::ClassInfos(KaxSliceDuration::Create, KaxSliceDuration_TheId, "SliceDuration", KaxSliceDuration_Context);\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlCallbacks KaxReferenceVirtual::ClassInfos(KaxReferenceVirtual::Create, KaxReferenceVirtual_TheId, "ReferenceVirtual", KaxReferenceVirtual_Context);\r
-#endif // MATROSKA_VERSION\r
+DEFINE_MKX_UINTEGER(KaxReferenceVirtual,  0xFD, 1, KaxBlockGroup, "ReferenceVirtual");\r
+#endif\r
+\r
 \r
 KaxSlices::KaxSlices()\r
  :EbmlMaster(KaxSlices_Context)\r
index e9933abf12eaf0f3199a2bec95d86ca6aebe6543..a44008909cc60d47be2b03108ad2e42bb480883d 100644 (file)
 */\r
 #include "matroska/KaxChapters.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 // sub elements\r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-EbmlSemantic KaxChapters_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxChapters[1] =\r
 {\r
     EbmlSemantic(true, false,  EBML_INFO(KaxEditionEntry)),\r
 };\r
 \r
-EbmlSemantic KaxEditionEntry_ContextList[5] =\r
+static const EbmlSemantic ContextList_KaxEditionEntry[5] =\r
 {\r
     EbmlSemantic(false, true , EBML_INFO(KaxEditionUID)),\r
     EbmlSemantic(true , true , EBML_INFO(KaxEditionFlagHidden)),\r
@@ -52,7 +53,7 @@ EbmlSemantic KaxEditionEntry_ContextList[5] =
     EbmlSemantic(true , false, EBML_INFO(KaxChapterAtom)),\r
 };\r
 \r
-EbmlSemantic KaxChapterAtom_ContextList[12] =\r
+static const EbmlSemantic ContextList_KaxChapterAtom[12] =\r
 {\r
     EbmlSemantic(false, false, EBML_INFO(KaxChapterAtom)),\r
     EbmlSemantic(true,  true,  EBML_INFO(KaxChapterUID)),\r
@@ -68,114 +69,59 @@ EbmlSemantic KaxChapterAtom_ContextList[12] =
     EbmlSemantic(false, false, EBML_INFO(KaxChapterProcess)),\r
 };\r
 \r
-EbmlSemantic KaxChapterTrack_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxChapterTrack[1] =\r
 {\r
     EbmlSemantic(true, false, EBML_INFO(KaxChapterTrackNumber)),\r
 };\r
 \r
-EbmlSemantic KaxChapterDisplay_ContextList[3] =\r
+static const EbmlSemantic ContextList_KaxChapterDisplay[3] =\r
 {\r
     EbmlSemantic(true,  true,  EBML_INFO(KaxChapterString)),\r
     EbmlSemantic(true,  false, EBML_INFO(KaxChapterLanguage)),\r
     EbmlSemantic(false, false, EBML_INFO(KaxChapterCountry)),\r
 };\r
 \r
-EbmlSemantic KaxChapterProcess_ContextList[3] =\r
+static const EbmlSemantic ContextList_KaxChapterProcess[3] =\r
 {\r
     EbmlSemantic(true,  true,  EBML_INFO(KaxChapterProcessCodecID)),\r
     EbmlSemantic(false, true,  EBML_INFO(KaxChapterProcessPrivate)),\r
     EbmlSemantic(false, false, EBML_INFO(KaxChapterProcessCommand)),\r
 };\r
 \r
-EbmlSemantic KaxChapterProcessCommand_ContextList[2] =\r
+static const EbmlSemantic ContextList_KaxChapterProcessCommand[2] =\r
 {\r
     EbmlSemantic(true,  true,  EBML_INFO(KaxChapterProcessTime)),\r
     EbmlSemantic(true,  true,  EBML_INFO(KaxChapterProcessData)),\r
 };\r
 \r
-const EbmlSemanticContext KaxChapters_Context = EbmlSemanticContext(countof(KaxChapters_ContextList), KaxChapters_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapters));\r
-const EbmlSemanticContext KaxEditionEntry_Context = EbmlSemanticContext(countof(KaxEditionEntry_ContextList), KaxEditionEntry_ContextList, &KaxChapters_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionEntry));\r
-const EbmlSemanticContext KaxEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionUID));\r
-const EbmlSemanticContext KaxEditionFlagHidden_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionFlagHidden));\r
-const EbmlSemanticContext KaxEditionFlagDefault_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionFlagDefault));\r
-const EbmlSemanticContext KaxEditionFlagOrdered_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionFlagOrdered));\r
-const EbmlSemanticContext KaxChapterAtom_Context = EbmlSemanticContext(countof(KaxChapterAtom_ContextList), KaxChapterAtom_ContextList, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterAtom));\r
-const EbmlSemanticContext KaxChapterTrack_Context = EbmlSemanticContext(countof(KaxChapterTrack_ContextList), KaxChapterTrack_ContextList, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTrack));\r
-const EbmlSemanticContext KaxChapterDisplay_Context = EbmlSemanticContext(countof(KaxChapterDisplay_ContextList), KaxChapterDisplay_ContextList, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterDisplay));\r
-const EbmlSemanticContext KaxChapterUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterUID));\r
-const EbmlSemanticContext KaxChapterTimeStart_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTimeStart));\r
-const EbmlSemanticContext KaxChapterTimeEnd_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTimeEnd));\r
-const EbmlSemanticContext KaxChapterFlagHidden_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterFlagHidden));\r
-const EbmlSemanticContext KaxChapterFlagEnabled_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterFlagEnabled));\r
-const EbmlSemanticContext KaxChapterSegmentUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterSegmentUID));\r
-const EbmlSemanticContext KaxChapterSegmentEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterSegmentEditionUID));\r
-const EbmlSemanticContext KaxChapterPhysicalEquiv_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterPhysicalEquiv));\r
-const EbmlSemanticContext KaxChapterTrackNumber_Context = EbmlSemanticContext(0, NULL, &KaxChapterTrack_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTrackNumber));\r
-const EbmlSemanticContext KaxChapterString_Context = EbmlSemanticContext(0, NULL, &KaxChapterDisplay_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterString));\r
-const EbmlSemanticContext KaxChapterLanguage_Context = EbmlSemanticContext(0, NULL, &KaxChapterLanguage_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterLanguage));\r
-const EbmlSemanticContext KaxChapterCountry_Context = EbmlSemanticContext(0, NULL, &KaxChapterCountry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterCountry));\r
-const EbmlSemanticContext KaxChapterProcess_Context = EbmlSemanticContext(countof(KaxChapterProcess_ContextList), KaxChapterProcess_ContextList, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcess));\r
-const EbmlSemanticContext KaxChapterProcessCodecID_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcess_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessCodecID));\r
-const EbmlSemanticContext KaxChapterProcessPrivate_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcess_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessPrivate));\r
-const EbmlSemanticContext KaxChapterProcessCommand_Context = EbmlSemanticContext(countof(KaxChapterProcessCommand_ContextList), KaxChapterProcessCommand_ContextList, &KaxChapterProcess_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessCommand));\r
-const EbmlSemanticContext KaxChapterProcessTime_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcessCommand_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessTime));\r
-const EbmlSemanticContext KaxChapterProcessData_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcessCommand_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessData));\r
-\r
-EbmlId KaxChapters_TheId               (0x1043A770, 4);\r
-EbmlId KaxEditionEntry_TheId           (0x45B9, 2);\r
-EbmlId KaxEditionUID_TheId             (0x45BC, 2);\r
-EbmlId KaxEditionFlagHidden_TheId      (0x45BD, 2);\r
-EbmlId KaxEditionFlagDefault_TheId     (0x45DB, 2);\r
-EbmlId KaxEditionFlagOrdered_TheId     (0x45DD, 2);\r
-EbmlId KaxChapterAtom_TheId            (0xB6, 1);\r
-EbmlId KaxChapterUID_TheId             (0x73C4, 2);\r
-EbmlId KaxChapterTimeStart_TheId       (0x91, 1);\r
-EbmlId KaxChapterTimeEnd_TheId         (0x92, 1);\r
-EbmlId KaxChapterFlagHidden_TheId      (0x98, 1);\r
-EbmlId KaxChapterFlagEnabled_TheId     (0x4598, 2);\r
-EbmlId KaxChapterSegmentUID_TheId      (0x6E67, 2);\r
-EbmlId KaxChapterSegmentEditionUID_TheId(0x6EBC, 2);\r
-EbmlId KaxChapterPhysicalEquiv_TheId   (0x63C3, 2);\r
-EbmlId KaxChapterTrack_TheId           (0x8F, 1);\r
-EbmlId KaxChapterTrackNumber_TheId     (0x89, 1);\r
-EbmlId KaxChapterDisplay_TheId         (0x80, 1);\r
-EbmlId KaxChapterString_TheId          (0x85, 1);\r
-EbmlId KaxChapterLanguage_TheId        (0x437C, 2);\r
-EbmlId KaxChapterCountry_TheId         (0x437E, 2);\r
-EbmlId KaxChapterProcess_TheId         (0x6944, 2);\r
-EbmlId KaxChapterProcessCodecID_TheId  (0x6955, 2);\r
-EbmlId KaxChapterProcessPrivate_TheId  (0x450D, 2);\r
-EbmlId KaxChapterProcessCommand_TheId  (0x6911, 2);\r
-EbmlId KaxChapterProcessTime_TheId     (0x6922, 2);\r
-EbmlId KaxChapterProcessData_TheId     (0x6933, 2);\r
-\r
-const EbmlCallbacks KaxChapters::ClassInfos(KaxChapters::Create, KaxChapters_TheId, "Chapters", KaxChapters_Context);\r
-const EbmlCallbacks KaxEditionEntry::ClassInfos(KaxEditionEntry::Create, KaxEditionEntry_TheId, "EditionEntry", KaxEditionEntry_Context);\r
-const EbmlCallbacks KaxEditionUID::ClassInfos(KaxEditionUID::Create, KaxEditionUID_TheId, "EditionUID", KaxEditionUID_Context);\r
-const EbmlCallbacks KaxEditionFlagHidden::ClassInfos(KaxEditionFlagHidden::Create, KaxEditionFlagHidden_TheId, "EditionFlagHidden", KaxEditionFlagHidden_Context);\r
-const EbmlCallbacks KaxEditionFlagDefault::ClassInfos(KaxEditionFlagDefault::Create, KaxEditionFlagDefault_TheId, "EditionFlagDefault", KaxEditionFlagDefault_Context);\r
-const EbmlCallbacks KaxEditionFlagOrdered::ClassInfos(KaxEditionFlagOrdered::Create, KaxEditionFlagOrdered_TheId, "EditionFlagOrdered", KaxEditionFlagOrdered_Context);\r
-const EbmlCallbacks KaxChapterAtom::ClassInfos(KaxChapterAtom::Create, KaxChapterAtom_TheId, "ChapterAtom", KaxChapterAtom_Context);\r
-const EbmlCallbacks KaxChapterUID::ClassInfos(KaxChapterUID::Create, KaxChapterUID_TheId, "ChapterUID", KaxChapterUID_Context);\r
-const EbmlCallbacks KaxChapterTimeStart::ClassInfos(KaxChapterTimeStart::Create, KaxChapterTimeStart_TheId, "ChapterTimeStart", KaxChapterTimeStart_Context);\r
-const EbmlCallbacks KaxChapterTimeEnd::ClassInfos(KaxChapterTimeEnd::Create, KaxChapterTimeEnd_TheId, "ChapterTimeEnd", KaxChapterTimeEnd_Context);\r
-const EbmlCallbacks KaxChapterFlagHidden::ClassInfos(KaxChapterFlagHidden::Create, KaxChapterFlagHidden_TheId, "ChapterFlagHidden", KaxChapterFlagHidden_Context);\r
-const EbmlCallbacks KaxChapterFlagEnabled::ClassInfos(KaxChapterFlagEnabled::Create, KaxChapterFlagEnabled_TheId, "ChapterFlagEnabled", KaxChapterFlagEnabled_Context);\r
-const EbmlCallbacks KaxChapterSegmentUID::ClassInfos(KaxChapterSegmentUID::Create, KaxChapterSegmentUID_TheId, "ChapterSegmentUID", KaxChapterSegmentUID_Context);\r
-const EbmlCallbacks KaxChapterSegmentEditionUID::ClassInfos(KaxChapterSegmentEditionUID::Create, KaxChapterSegmentEditionUID_TheId, "ChapterSegmentEditionUID", KaxChapterSegmentEditionUID_Context);\r
-const EbmlCallbacks KaxChapterPhysicalEquiv::ClassInfos(KaxChapterPhysicalEquiv::Create, KaxChapterPhysicalEquiv_TheId, "ChapterPhysicalEquiv", KaxChapterPhysicalEquiv_Context);\r
-const EbmlCallbacks KaxChapterTrack::ClassInfos(KaxChapterTrack::Create, KaxChapterTrack_TheId, "ChapterTrack", KaxChapterTrack_Context);\r
-const EbmlCallbacks KaxChapterTrackNumber::ClassInfos(KaxChapterTrackNumber::Create, KaxChapterTrackNumber_TheId, "ChapterTrackNumber", KaxChapterTrackNumber_Context);\r
-const EbmlCallbacks KaxChapterDisplay::ClassInfos(KaxChapterDisplay::Create, KaxChapterDisplay_TheId, "ChapterDisplay", KaxChapterDisplay_Context);\r
-const EbmlCallbacks KaxChapterString::ClassInfos(KaxChapterString::Create, KaxChapterString_TheId, "ChapterString", KaxChapterString_Context);\r
-const EbmlCallbacks KaxChapterLanguage::ClassInfos(KaxChapterLanguage::Create, KaxChapterLanguage_TheId, "ChapterLanguage", KaxChapterLanguage_Context);\r
-const EbmlCallbacks KaxChapterCountry::ClassInfos(KaxChapterCountry::Create, KaxChapterCountry_TheId, "ChapterCountry", KaxChapterCountry_Context);\r
-const EbmlCallbacks KaxChapterProcess::ClassInfos(KaxChapterProcess::Create, KaxChapterProcess_TheId, "ChapterProcess", KaxChapterProcess_Context);\r
-const EbmlCallbacks KaxChapterProcessCodecID::ClassInfos(KaxChapterProcessCodecID::Create, KaxChapterProcessCodecID_TheId, "ChapterProcessCodecID", KaxChapterProcessCodecID_Context);\r
-const EbmlCallbacks KaxChapterProcessPrivate::ClassInfos(KaxChapterProcessPrivate::Create, KaxChapterProcessPrivate_TheId, "ChapterProcessPrivate", KaxChapterProcessPrivate_Context);\r
-const EbmlCallbacks KaxChapterProcessCommand::ClassInfos(KaxChapterProcessCommand::Create, KaxChapterProcessCommand_TheId, "ChapterProcessCommand", KaxChapterProcessCommand_Context);\r
-const EbmlCallbacks KaxChapterProcessTime::ClassInfos(KaxChapterProcessTime::Create, KaxChapterProcessTime_TheId, "ChapterProcessTime", KaxChapterProcessTime_Context);\r
-const EbmlCallbacks KaxChapterProcessData::ClassInfos(KaxChapterProcessData::Create, KaxChapterProcessData_TheId, "ChapterProcessData", KaxChapterProcessData_Context);\r
+DEFINE_MKX_MASTER   (KaxChapters,             0x1043A770, 4, KaxSegment, "Chapters");\r
+DEFINE_MKX_MASTER   (KaxEditionEntry,             0x45B9, 2, KaxChapters, "EditionEntry");\r
+DEFINE_MKX_UINTEGER (KaxEditionUID,               0x45BC, 2, KaxEditionEntry, "EditionUID");\r
+DEFINE_MKX_UINTEGER (KaxEditionFlagHidden,        0x45BD, 2, KaxEditionEntry, "EditionFlagHidden");\r
+DEFINE_MKX_UINTEGER (KaxEditionFlagDefault,       0x45DB, 2, KaxEditionEntry, "EditionFlagDefault");\r
+DEFINE_MKX_UINTEGER (KaxEditionFlagOrdered,       0x45DD, 2, KaxEditionEntry, "EditionFlagOrdered");\r
+DEFINE_MKX_MASTER   (KaxChapterAtom,                0xB6, 1, KaxEditionEntry, "ChapterAtom");\r
+DEFINE_MKX_UINTEGER (KaxChapterUID,               0x73C4, 2, KaxChapterAtom, "ChapterUID");\r
+DEFINE_MKX_UINTEGER (KaxChapterTimeStart,           0x91, 1, KaxChapterAtom, "ChapterTimeStart");\r
+DEFINE_MKX_UINTEGER (KaxChapterTimeEnd,             0x92, 1, KaxChapterAtom, "ChapterTimeEnd");\r
+DEFINE_MKX_UINTEGER (KaxChapterFlagHidden,          0x98, 1, KaxChapterAtom, "ChapterFlagHidden");\r
+DEFINE_MKX_UINTEGER (KaxChapterFlagEnabled,       0x4598, 2, KaxChapterAtom, "ChapterFlagEnabled");\r
+DEFINE_MKX_BINARY   (KaxChapterSegmentUID,        0x6E67, 2, KaxChapterAtom, "ChapterSegmentUID");\r
+DEFINE_MKX_BINARY   (KaxChapterSegmentEditionUID, 0x6EBC, 2, KaxChapterAtom, "ChapterSegmentEditionUID");\r
+DEFINE_MKX_UINTEGER (KaxChapterPhysicalEquiv,     0x63C3, 2, KaxChapterAtom, "ChapterPhysicalEquiv");\r
+DEFINE_MKX_MASTER   (KaxChapterTrack,               0x8F, 1, KaxChapterAtom, "ChapterTrack");\r
+DEFINE_MKX_UINTEGER (KaxChapterTrackNumber,         0x89, 1, KaxChapterTrack, "ChapterTrackNumber");\r
+DEFINE_MKX_MASTER   (KaxChapterDisplay,             0x80, 1, KaxChapterAtom, "ChapterDisplay");\r
+DEFINE_MKX_UNISTRING(KaxChapterString,              0x85, 1, KaxChapterDisplay, "ChapterString");\r
+DEFINE_MKX_STRING   (KaxChapterLanguage,          0x437C, 2, KaxChapterLanguage, "ChapterLanguage"); // parent context ?\r
+DEFINE_MKX_STRING   (KaxChapterCountry,           0x437E, 2, KaxChapterCountry, "ChapterCountry"); // parent context ?\r
+DEFINE_MKX_MASTER   (KaxChapterProcess,           0x6944, 2, KaxChapterAtom, "ChapterProcess");\r
+DEFINE_MKX_UINTEGER (KaxChapterProcessCodecID,    0x6955, 2, KaxChapterProcess, "ChapterProcessCodecID");\r
+DEFINE_MKX_BINARY   (KaxChapterProcessPrivate,    0x450D, 2, KaxChapterProcess, "ChapterProcessPrivate");\r
+DEFINE_MKX_MASTER   (KaxChapterProcessCommand,    0x6911, 2, KaxChapterProcess, "ChapterProcessCommand");\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(KaxChapters_Context)\r
index adadf531c68bde536f9f3b5d4a29c71d5095d02d..1be9d56a10538b064a0995e0028569ca1d9cadc8 100644 (file)
 #include "matroska/KaxBlock.h"\r
 #include "matroska/KaxContexts.h"\r
 #include "matroska/KaxSegment.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 // sub elements\r
 START_LIBMATROSKA_NAMESPACE\r
 \r
 #if MATROSKA_VERSION == 1\r
-EbmlSemantic KaxCluster_ContextList[5] =\r
+static const EbmlSemantic ContextList_KaxCluster[5] =\r
 #else // MATROSKA_VERSION\r
-EbmlSemantic KaxCluster_ContextList[6] =\r
+static const EbmlSemantic ContextList_KaxCluster[6] =\r
 #endif // MATROSKA_VERSION\r
 {\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxClusterTimecode)),\r
@@ -55,10 +56,7 @@ EbmlSemantic KaxCluster_ContextList[6] =
        EbmlSemantic(false, true,  EBML_INFO(KaxClusterPosition)),\r
 };\r
 \r
-const EbmlSemanticContext KaxCluster_Context = EbmlSemanticContext(countof(KaxCluster_ContextList), KaxCluster_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCluster));\r
-\r
-EbmlId KaxCluster_TheId(0x1F43B675, 4);\r
-const EbmlCallbacks KaxCluster::ClassInfos(KaxCluster::Create, KaxCluster_TheId, "Cluster", KaxCluster_Context);\r
+DEFINE_MKX_MASTER(KaxCluster, 0x1F43B675, 4, KaxSegment, "Cluster");\r
 \r
 KaxCluster::KaxCluster()\r
        :EbmlMaster(KaxCluster_Context)\r
index 9bf6b99f13c30a3c4e5a0b5058e516e2ea418ab8..309efaffb5c97eeb2b7686cae7ebead7066ae38b 100644 (file)
 */\r
 #include "matroska/KaxClusterData.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-EbmlId KaxClusterTimecode_TheId         (0xE7, 1);\r
-EbmlId KaxClusterSilentTracks_TheId     (0x5854, 2);\r
-EbmlId KaxClusterSilentTrackNumber_TheId(0x58D7, 2);\r
-EbmlId KaxClusterPrevSize_TheId         (0xAB, 1);\r
-EbmlId KaxClusterPosition_TheId         (0xA7, 1);\r
-\r
-EbmlSemantic KaxClusterSilentTracks_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxClusterSilentTracks[1] =\r
 {\r
        EbmlSemantic(false,  false, EBML_INFO(KaxClusterSilentTrackNumber)),\r
 };\r
 \r
-const EbmlSemanticContext KaxClusterTimecode_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterTimecode));\r
-const EbmlSemanticContext KaxClusterSilentTracks_Context = EbmlSemanticContext(countof(KaxClusterSilentTracks_ContextList), KaxClusterSilentTracks_ContextList, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterSilentTracks));\r
-const EbmlSemanticContext KaxClusterSilentTrackNumber_Context = EbmlSemanticContext(0, NULL, &KaxClusterSilentTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterSilentTrackNumber));\r
-const EbmlSemanticContext KaxClusterPosition_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterPosition));\r
-const EbmlSemanticContext KaxClusterPrevSize_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterPrevSize));\r
-\r
-const EbmlCallbacks KaxClusterTimecode::ClassInfos(KaxClusterTimecode::Create, KaxClusterTimecode_TheId, "ClusterTimecode", KaxClusterTimecode_Context);\r
-const EbmlCallbacks KaxClusterSilentTracks::ClassInfos(KaxClusterSilentTracks::Create, KaxClusterSilentTracks_TheId, "ClusterSilentTracks", KaxClusterSilentTracks_Context);\r
-const EbmlCallbacks KaxClusterSilentTrackNumber::ClassInfos(KaxClusterSilentTrackNumber::Create, KaxClusterSilentTrackNumber_TheId, "ClusterSilentTrackNumber", KaxClusterSilentTrackNumber_Context);\r
-const EbmlCallbacks KaxClusterPrevSize::ClassInfos(KaxClusterPrevSize::Create, KaxClusterPrevSize_TheId, "ClusterPrevSize", KaxClusterPrevSize_Context);\r
-const EbmlCallbacks KaxClusterPosition::ClassInfos(KaxClusterPosition::Create, KaxClusterPosition_TheId, "ClusterPosition", KaxClusterPosition_Context);\r
+DEFINE_MKX_UINTEGER(KaxClusterTimecode,            0xE7, 1, KaxCluster, "ClusterTimecode");\r
+DEFINE_MKX_MASTER  (KaxClusterSilentTracks,      0x5854, 2, KaxCluster, "ClusterSilentTracks")\r
+DEFINE_MKX_UINTEGER(KaxClusterSilentTrackNumber, 0x58D7, 2, KaxClusterSilentTracks, "ClusterSilentTrackNumber");\r
+DEFINE_MKX_UINTEGER(KaxClusterPosition,            0xA7, 1, KaxCluster, "ClusterPosition");\r
+DEFINE_MKX_UINTEGER(KaxClusterPrevSize,            0xAB, 1, KaxCluster, "ClusterPrevSize");\r
 \r
 KaxClusterSilentTracks::KaxClusterSilentTracks()\r
 :EbmlMaster(KaxClusterSilentTracks_Context)\r
index 6d54da552e3cf85a91c56671486222ad55b84c38..0eb67346b541e7cecdacee88f6d11a16308e2630 100644 (file)
 */\r
 #include "matroska/KaxContentEncoding.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-const EbmlSemantic KaxContentEncodings_ContextList[1] = {\r
+static const EbmlSemantic ContextList_KaxContentEncodings[1] = {\r
   EbmlSemantic(true, true, EBML_INFO(KaxContentEncoding)),\r
 };\r
 \r
-const EbmlSemantic KaxContentEncoding_ContextList[5] = {\r
+static const EbmlSemantic ContextList_KaxContentEncoding[5] = {\r
   EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingOrder)),\r
   EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingScope)),\r
   EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingType)),\r
@@ -49,12 +50,12 @@ const EbmlSemantic KaxContentEncoding_ContextList[5] = {
   EbmlSemantic(false, true, EBML_INFO(KaxContentEncryption)),\r
 };\r
 \r
-const EbmlSemantic KaxContentCompression_ContextList[2] = {\r
+static const EbmlSemantic ContextList_KaxContentCompression[2] = {\r
   EbmlSemantic(true, true, EBML_INFO(KaxContentCompAlgo)),\r
   EbmlSemantic(false, true, EBML_INFO(KaxContentCompSettings)),\r
 };\r
 \r
-const EbmlSemantic KaxContentEncryption_ContextList[6] = {\r
+static const EbmlSemantic ContextList_KaxContentEncryption[6] = {\r
   EbmlSemantic(false, true, EBML_INFO(KaxContentEncAlgo)),\r
   EbmlSemantic(false, true, EBML_INFO(KaxContentEncKeyID)),\r
   EbmlSemantic(false, true, EBML_INFO(KaxContentSignature)),\r
@@ -63,177 +64,21 @@ const EbmlSemantic KaxContentEncryption_ContextList[6] = {
   EbmlSemantic(false, true, EBML_INFO(KaxContentSigHashAlgo)),\r
 };\r
 \r
-EbmlId KaxContentEncodings_TheId       (0x6d80, 2);\r
-EbmlId KaxContentEncoding_TheId        (0x6240, 2);\r
-EbmlId KaxContentEncodingOrder_TheId   (0x5031, 2);\r
-EbmlId KaxContentEncodingScope_TheId   (0x5032, 2);\r
-EbmlId KaxContentEncodingType_TheId    (0x5033, 2);\r
-EbmlId KaxContentCompression_TheId     (0x5034, 2);\r
-EbmlId KaxContentCompAlgo_TheId        (0x4254, 2);\r
-EbmlId KaxContentCompSettings_TheId    (0x4255, 2);\r
-EbmlId KaxContentEncryption_TheId      (0x5035, 2);\r
-EbmlId KaxContentEncAlgo_TheId         (0x47e1, 2);\r
-EbmlId KaxContentEncKeyID_TheId        (0x47e2, 2);\r
-EbmlId KaxContentSignature_TheId       (0x47e3, 2);\r
-EbmlId KaxContentSigKeyID_TheId        (0x47e4, 2);\r
-EbmlId KaxContentSigAlgo_TheId         (0x47e5, 2);\r
-EbmlId KaxContentSigHashAlgo_TheId     (0x47e6, 2);\r
\r
-const EbmlSemanticContext KaxContentEncodings_Context =\r
-EbmlSemanticContext(countof(KaxContentEncodings_ContextList),\r
-                    KaxContentEncodings_ContextList, &KaxTrackEntry_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentEncodings));\r
-\r
-const EbmlSemanticContext KaxContentEncoding_Context =\r
-EbmlSemanticContext(countof(KaxContentEncoding_ContextList),\r
-                    KaxContentEncoding_ContextList,\r
-                    &KaxContentEncodings_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentEncoding));\r
-\r
-const EbmlSemanticContext KaxContentEncodingOrder_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentEncoding_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentEncodingOrder));\r
-\r
-const EbmlSemanticContext KaxContentEncodingScope_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentEncoding_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentEncodingScope));\r
-\r
-const EbmlSemanticContext KaxContentEncodingType_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentEncoding_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentEncodingType));\r
-\r
-const EbmlSemanticContext KaxContentCompression_Context =\r
-EbmlSemanticContext(countof(KaxContentCompression_ContextList),\r
-                    KaxContentCompression_ContextList,\r
-                    &KaxContentEncoding_Context, *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentCompression));\r
-\r
-const EbmlSemanticContext KaxContentCompAlgo_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentCompression_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentCompAlgo));\r
-\r
-const EbmlSemanticContext KaxContentCompSettings_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentCompression_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentCompSettings));\r
-\r
-const EbmlSemanticContext KaxContentEncryption_Context =\r
-EbmlSemanticContext(countof(KaxContentEncryption_ContextList),\r
-                    KaxContentEncryption_ContextList,\r
-                    &KaxContentEncoding_Context, *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentEncryption));\r
-\r
-const EbmlSemanticContext KaxContentEncAlgo_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentEncAlgo));\r
-\r
-const EbmlSemanticContext KaxContentEncKeyID_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentEncKeyID));\r
-\r
-const EbmlSemanticContext KaxContentSignature_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentSignature));\r
-\r
-const EbmlSemanticContext KaxContentSigAlgo_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentSigKeyID));\r
-\r
-const EbmlSemanticContext KaxContentSigHashAlgo_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentSigKeyID));\r
-\r
-const EbmlSemanticContext KaxContentSigKeyID_Context =\r
-EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,\r
-                    *GetKaxGlobal_Context,\r
-                    &EBML_INFO(KaxContentSigKeyID));\r
-\r
-const EbmlCallbacks\r
-KaxContentEncodings::ClassInfos(KaxContentEncodings::Create,\r
-                                KaxContentEncodings_TheId,\r
-                                "ContentEncodings",\r
-                                KaxContentEncodings_Context);\r
-const EbmlCallbacks\r
-KaxContentEncoding::ClassInfos(KaxContentEncoding::Create,\r
-                               KaxContentEncoding_TheId,\r
-                               "ContentEncoding",\r
-                               KaxContentEncoding_Context);\r
-const EbmlCallbacks\r
-KaxContentEncodingOrder::ClassInfos(KaxContentEncodingOrder::Create,\r
-                                    KaxContentEncodingOrder_TheId,\r
-                                    "ContentEncodingOrder",\r
-                                    KaxContentEncodingOrder_Context);\r
-const EbmlCallbacks\r
-KaxContentEncodingScope::ClassInfos(KaxContentEncodingScope::Create,\r
-                                    KaxContentEncodingScope_TheId,\r
-                                    "ContentEncodingScope",\r
-                                    KaxContentEncodingScope_Context);\r
-const EbmlCallbacks\r
-KaxContentEncodingType::ClassInfos(KaxContentEncodingType::Create,\r
-                                   KaxContentEncodingType_TheId,\r
-                                   "ContentEncodingType",\r
-                                   KaxContentEncodingType_Context);\r
-const EbmlCallbacks\r
-KaxContentCompression::ClassInfos(KaxContentCompression::Create,\r
-                                  KaxContentCompression_TheId,\r
-                                  "ContentCompression",\r
-                                  KaxContentCompression_Context);\r
-const EbmlCallbacks\r
-KaxContentCompAlgo::ClassInfos(KaxContentCompAlgo::Create,\r
-                               KaxContentCompAlgo_TheId,\r
-                               "ContentCompAlgo",\r
-                               KaxContentCompAlgo_Context);\r
-const EbmlCallbacks\r
-KaxContentCompSettings::ClassInfos(KaxContentCompSettings::Create,\r
-                                   KaxContentCompSettings_TheId,\r
-                                   "ContentCompSettings",\r
-                                   KaxContentCompSettings_Context);\r
-const EbmlCallbacks\r
-KaxContentEncryption::ClassInfos(KaxContentEncryption::Create,\r
-                                 KaxContentEncryption_TheId,\r
-                                 "ContentEncryption",\r
-                                 KaxContentEncryption_Context);\r
-const EbmlCallbacks\r
-KaxContentEncAlgo::ClassInfos(KaxContentEncAlgo::Create,\r
-                              KaxContentEncAlgo_TheId,\r
-                              "ContentEncAlgo",\r
-                              KaxContentEncAlgo_Context);\r
-const EbmlCallbacks\r
-KaxContentEncKeyID::ClassInfos(KaxContentEncKeyID::Create,\r
-                               KaxContentEncKeyID_TheId,\r
-                               "ContentEncKeyID",\r
-                               KaxContentEncKeyID_Context);\r
-const EbmlCallbacks\r
-KaxContentSignature::ClassInfos(KaxContentSignature::Create,\r
-                                KaxContentSignature_TheId,\r
-                                "ContentSignature",\r
-                                KaxContentSignature_Context);\r
-const EbmlCallbacks\r
-KaxContentSigAlgo::ClassInfos(KaxContentSigAlgo::Create,\r
-                              KaxContentSigAlgo_TheId,\r
-                              "ContentSigAlgo",\r
-                              KaxContentSigAlgo_Context);\r
-const EbmlCallbacks\r
-KaxContentSigHashAlgo::ClassInfos(KaxContentSigHashAlgo::Create,\r
-                                  KaxContentSigHashAlgo_TheId,\r
-                                  "ContentSigHashAlgo",\r
-                                  KaxContentSigHashAlgo_Context);\r
-const EbmlCallbacks\r
-KaxContentSigKeyID::ClassInfos(KaxContentSigKeyID::Create,\r
-                               KaxContentSigKeyID_TheId,\r
-                               "ContentSigKeyID",\r
-                               KaxContentSigKeyID_Context);\r
+DEFINE_MKX_MASTER  (KaxContentEncodings,     0x6d80, 2, KaxTrackEntry, "ContentEncodings");\r
+DEFINE_MKX_MASTER  (KaxContentEncoding,      0x6240, 2, KaxContentEncodings, "ContentEncoding");\r
+DEFINE_MKX_UINTEGER(KaxContentEncodingOrder, 0x5031, 2, KaxContentEncoding, "ContentEncodingOrder");\r
+DEFINE_MKX_UINTEGER(KaxContentEncodingScope, 0x5032, 2, KaxContentEncoding, "ContentEncodingScope");\r
+DEFINE_MKX_UINTEGER(KaxContentEncodingType,  0x5033, 2, KaxContentEncoding, "ContentEncodingType");\r
+DEFINE_MKX_MASTER  (KaxContentCompression,   0x5034, 2, KaxContentEncoding, "ContentCompression");\r
+DEFINE_MKX_UINTEGER(KaxContentCompAlgo,      0x4254, 2, KaxContentCompression, "ContentCompAlgo");\r
+DEFINE_MKX_UINTEGER(KaxContentCompSettings,  0x4255, 2, KaxContentCompression, "ContentCompSettings");\r
+DEFINE_MKX_MASTER  (KaxContentEncryption,    0x5035, 2, KaxContentEncoding, "ContentEncryption");\r
+DEFINE_MKX_UINTEGER(KaxContentEncAlgo,       0x47e1, 2, KaxContentEncryption, "ContentEncAlgo");\r
+DEFINE_MKX_BINARY  (KaxContentEncKeyID,      0x47e2, 2, KaxContentEncryption, "ContentEncKeyID");\r
+DEFINE_MKX_BINARY  (KaxContentSignature,     0x47e3, 2, KaxContentEncryption, "ContentSignature");\r
+DEFINE_MKX_BINARY  (KaxContentSigKeyID,      0x47e4, 2, KaxContentEncryption, "ContentSigKeyID");\r
+DEFINE_MKX_UINTEGER(KaxContentSigAlgo,       0x47e5, 2, KaxContentEncryption, "ContentSigAlgo");\r
+DEFINE_MKX_UINTEGER(KaxContentSigHashAlgo,   0x47e6, 2, KaxContentEncryption, "ContentSigHashAlgo");\r
 \r
 KaxContentEncodings::KaxContentEncodings():\r
   EbmlMaster(KaxContentEncodings_Context) {\r
index e998eb3d7c5cb1371954de6a7341f4bc08dec859..d2ea0e2874ef8a3a6f918e9ad6221efe1e9ca6a1 100644 (file)
 #include "matroska/KaxCuesData.h"\r
 #include "matroska/KaxContexts.h"\r
 #include "ebml/EbmlStream.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 // sub elements\r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-EbmlSemantic KaxCues_ContextList[1] = \r
+static const EbmlSemantic ContextList_KaxCues[1] = \r
 {\r
        EbmlSemantic(true,  false,  EBML_INFO(KaxCuePoint)),\r
 };\r
 \r
-const EbmlSemanticContext KaxCues_Context = EbmlSemanticContext(countof(KaxCues_ContextList), KaxCues_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCues));\r
-\r
-EbmlId KaxCues_TheId(0x1C53BB6B, 4);\r
-const EbmlCallbacks KaxCues::ClassInfos(KaxCues::Create, KaxCues_TheId, "Cues", KaxCues_Context);\r
+DEFINE_MKX_MASTER(KaxCues, 0x1C53BB6B, 4, KaxSegment, "Cues");\r
 \r
 KaxCues::KaxCues()\r
        :EbmlMaster(KaxCues_Context)\r
index ca74e676158a635aab2949d711b348b8953aca8c..2693152b054147acaf701c7215fdb5a41893054f 100644 (file)
-/****************************************************************************
-** 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: KaxCuesData.cpp 1265 2007-01-14 17:20:35Z mosu $
-       \author Steve Lhomme     <robux4 @ users.sf.net>
-*/
-#include <cassert>
-
-#include "matroska/KaxCuesData.h"
-#include "matroska/KaxContexts.h"
-#include "matroska/KaxBlock.h"
-#include "matroska/KaxBlockData.h"
-#include "matroska/KaxCluster.h"
-#include "matroska/KaxSegment.h"
-
-START_LIBMATROSKA_NAMESPACE
-
-EbmlSemantic KaxCuePoint_ContextList[2] =
-{
-       EbmlSemantic(true,  true,  EBML_INFO(KaxCueTime)),
-       EbmlSemantic(true,  false, EBML_INFO(KaxCueTrackPositions)),
-};
-
-#if MATROSKA_VERSION == 1
-EbmlSemantic KaxCueTrackPositions_ContextList[3] =
-#else // MATROSKA_VERSION
-EbmlSemantic KaxCueTrackPositions_ContextList[5] =
-#endif // MATROSKA_VERSION
-{
-       EbmlSemantic(true,  true,  EBML_INFO(KaxCueTrack)),
-       EbmlSemantic(true,  true,  EBML_INFO(KaxCueClusterPosition)),
-       EbmlSemantic(false, true,  EBML_INFO(KaxCueBlockNumber)),
-#if MATROSKA_VERSION >= 2
-       EbmlSemantic(false, true,  EBML_INFO(KaxCueCodecState)),
-       EbmlSemantic(false, false, EBML_INFO(KaxCueReference)),
-#endif // MATROSKA_VERSION
-};
-
-#if MATROSKA_VERSION >= 2
-EbmlSemantic KaxCueReference_ContextList[4] =
-{
-       EbmlSemantic(true,  true,  EBML_INFO(KaxCueRefTime)),
-       EbmlSemantic(true,  true,  EBML_INFO(KaxCueRefCluster)),
-       EbmlSemantic(false, true,  EBML_INFO(KaxCueRefNumber)),
-       EbmlSemantic(false, true,  EBML_INFO(KaxCueRefCodecState)),
-};
-#endif // MATROSKA_VERSION
-
-EbmlId KaxCuePoint_TheId          (0xBB, 1);
-EbmlId KaxCueTime_TheId           (0xB3, 1);
-EbmlId KaxCueTrackPositions_TheId (0xB7, 1);
-EbmlId KaxCueTrack_TheId          (0xF7, 1);
-EbmlId KaxCueClusterPosition_TheId(0xF1, 1);
-EbmlId KaxCueBlockNumber_TheId    (0x5378, 2);
-#if MATROSKA_VERSION >= 2
-EbmlId KaxCueCodecState_TheId     (0xEA, 1);
-EbmlId KaxCueReference_TheId      (0xDB, 1);
-EbmlId KaxCueRefTime_TheId        (0x96, 1);
-EbmlId KaxCueRefCluster_TheId     (0x97, 1);
-EbmlId KaxCueRefNumber_TheId      (0x535F, 2);
-EbmlId KaxCueRefCodecState_TheId  (0xEB, 1);
-#endif // MATROSKA_VERSION
-
-const EbmlSemanticContext KaxCuePoint_Context = EbmlSemanticContext(countof(KaxCuePoint_ContextList), KaxCuePoint_ContextList, &KaxCues_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCuePoint));
-const EbmlSemanticContext KaxCueTime_Context = EbmlSemanticContext(0, NULL, &KaxCuePoint_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueTime));
-const EbmlSemanticContext KaxCueTrackPositions_Context = EbmlSemanticContext(countof(KaxCueTrackPositions_ContextList), KaxCueTrackPositions_ContextList, &KaxCuePoint_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueTrackPositions));
-const EbmlSemanticContext KaxCueTrack_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueTrack));
-const EbmlSemanticContext KaxCueClusterPosition_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueClusterPosition));
-const EbmlSemanticContext KaxCueBlockNumber_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueBlockNumber));
-#if MATROSKA_VERSION >= 2
-const EbmlSemanticContext KaxCueCodecState_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueCodecState));
-const EbmlSemanticContext KaxCueReference_Context = EbmlSemanticContext(countof(KaxCueReference_ContextList), KaxCueReference_ContextList, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueReference));
-const EbmlSemanticContext KaxCueRefTime_Context = EbmlSemanticContext(0, NULL, &KaxCueReference_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefTime));
-const EbmlSemanticContext KaxCueRefCluster_Context = EbmlSemanticContext(0, NULL, &KaxCueRefTime_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefCluster));
-const EbmlSemanticContext KaxCueRefNumber_Context = EbmlSemanticContext(0, NULL, &KaxCueRefTime_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefNumber));
-const EbmlSemanticContext KaxCueRefCodecState_Context = EbmlSemanticContext(0, NULL, &KaxCueRefTime_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefCodecState));
-#endif // MATROSKA_VERSION
-
-const EbmlCallbacks KaxCuePoint::ClassInfos(KaxCuePoint::Create, KaxCuePoint_TheId, "CuePoint", KaxCuePoint_Context);
-const EbmlCallbacks KaxCueTime::ClassInfos(KaxCueTime::Create, KaxCueTime_TheId, "CueTime", KaxCueTime_Context);
-const EbmlCallbacks KaxCueTrackPositions::ClassInfos(KaxCueTrackPositions::Create, KaxCueTrackPositions_TheId, "CueTrackPositions", KaxCueTrackPositions_Context);
-const EbmlCallbacks KaxCueTrack::ClassInfos(KaxCueTrack::Create, KaxCueTrack_TheId, "CueTrack", KaxCueTrack_Context);
-const EbmlCallbacks KaxCueClusterPosition::ClassInfos(KaxCueClusterPosition::Create, KaxCueClusterPosition_TheId, "CueClusterPosition", KaxCueClusterPosition_Context);
-const EbmlCallbacks KaxCueBlockNumber::ClassInfos(KaxCueBlockNumber::Create, KaxCueBlockNumber_TheId, "CueBlockNumber", KaxCueBlockNumber_Context);
-#if MATROSKA_VERSION >= 2
-const EbmlCallbacks KaxCueCodecState::ClassInfos(KaxCueCodecState::Create, KaxCueCodecState_TheId, "CueCodecState", KaxCueCodecState_Context);
-const EbmlCallbacks KaxCueReference::ClassInfos(KaxCueReference::Create, KaxCueReference_TheId, "CueReference", KaxCueReference_Context);
-const EbmlCallbacks KaxCueRefTime::ClassInfos(KaxCueRefTime::Create, KaxCueRefTime_TheId, "CueRefTime", KaxCueRefTime_Context);
-const EbmlCallbacks KaxCueRefCluster::ClassInfos(KaxCueRefCluster::Create, KaxCueRefCluster_TheId, "CueRefCluster", KaxCueRefCluster_Context);
-const EbmlCallbacks KaxCueRefNumber::ClassInfos(KaxCueRefNumber::Create, KaxCueRefNumber_TheId, "CueRefNumber", KaxCueRefNumber_Context);
-const EbmlCallbacks KaxCueRefCodecState::ClassInfos(KaxCueRefCodecState::Create, KaxCueRefCodecState_TheId, "CueRefCodecState", KaxCueRefCodecState_Context);
-#endif // MATROSKA_VERSION
-
-KaxCuePoint::KaxCuePoint() 
- :EbmlMaster(KaxCuePoint_Context)
-{}
-
-KaxCueTrackPositions::KaxCueTrackPositions()
- :EbmlMaster(KaxCueTrackPositions_Context)
-{}
-
-#if MATROSKA_VERSION >= 2
-KaxCueReference::KaxCueReference()
- :EbmlMaster(KaxCueReference_Context)
-{}
-#endif // MATROSKA_VERSION
-
-/*!
-       \todo handle codec state checking
-       \todo remove duplicate references (reference to 2 frames that each reference the same frame)
-*/
-void KaxCuePoint::PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale)
-{
-       // fill me
-       KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
-       *static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
-
-       KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
-       KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
-       *static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNumber();
-       
-       KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
-       *static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
-
-#if MATROSKA_VERSION >= 2
-       // handle reference use
-       if (BlockReference.ReferenceCount() != 0)
-       {
-               unsigned int i;
-               for (i=0; i<BlockReference.ReferenceCount(); i++) {
-                       KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
-                       NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
-               }
-       }
-
-       KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockReference.FindFirstElt(EBML_INFO(KaxCodecState)));
-       if (CodecState != NULL) {
-               KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
-               *static_cast<EbmlUInteger*>(&CueCodecState) = BlockReference.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
-       }
-#endif // MATROSKA_VERSION
-
-       SetValueIsSet();
-}
-
-void KaxCuePoint::PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale)
-{
-       const KaxInternalBlock &BlockReference = BlobReference;
-
-       // fill me
-       KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
-       *static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
-
-       KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
-       KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
-       *static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNum();
-       
-       KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
-       *static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
-
-#if 0 // MATROSKA_VERSION >= 2
-       // handle reference use
-       if (BlockReference.ReferenceCount() != 0)
-       {
-               unsigned int i;
-               for (i=0; i<BlockReference.ReferenceCount(); i++) {
-                       KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
-                       NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
-               }
-       }
-#endif // MATROSKA_VERSION
-
-#if MATROSKA_VERSION >= 2
-       if (!BlobReference.IsSimpleBlock()) {
-               const KaxBlockGroup &BlockGroup = BlobReference;
-               const KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockGroup.FindFirstElt(EBML_INFO(KaxCodecState)));
-               if (CodecState != NULL) {
-                       KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
-                       *static_cast<EbmlUInteger*>(&CueCodecState) = BlockGroup.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
-               }
-       }
-#endif // MATROSKA_VERSION
-
-       SetValueIsSet();
-}
-
-#if MATROSKA_VERSION >= 2
-/*!
-       \todo handle codec state checking
-*/
-void KaxCueReference::AddReference(const KaxBlockBlob & BlockReference, uint64 GlobalTimecodeScale)
-{
-       const KaxInternalBlock & theBlock = BlockReference;
-       KaxCueRefTime & NewTime = GetChild<KaxCueRefTime>(*this);
-       *static_cast<EbmlUInteger*>(&NewTime) = theBlock.GlobalTimecode() / GlobalTimecodeScale;
-
-       KaxCueRefCluster & TheClustPos = GetChild<KaxCueRefCluster>(*this);
-       *static_cast<EbmlUInteger*>(&TheClustPos) = theBlock.ClusterPosition();
-
-#ifdef OLD
-       // handle recursive reference use
-       if (BlockReference.ReferenceCount() != 0)
-       {
-               unsigned int i;
-               for (i=0; i<BlockReference.ReferenceCount(); i++) {
-                       AddReference(BlockReference.Reference(i).RefBlock());
-               }
-       }
-#endif /* OLD */
-}
-#endif
-
-bool KaxCuePoint::IsSmallerThan(const EbmlElement * EltB) const
-{
-       assert(EbmlId(*this) == KaxCuePoint_TheId);
-       assert(EbmlId(*EltB) == KaxCuePoint_TheId);
-
-       const KaxCuePoint & theEltB = *static_cast<const KaxCuePoint *>(EltB);
-
-       // compare timecode
-       const KaxCueTime * TimeCodeA = static_cast<const KaxCueTime *>(FindElt(EBML_INFO(KaxCueTime)));
-       if (TimeCodeA == NULL)
-               return false;
-
-       const KaxCueTime * TimeCodeB = static_cast<const KaxCueTime *>(theEltB.FindElt(EBML_INFO(KaxCueTime)));
-       if (TimeCodeB == NULL)
-               return false;
-
-       if (TimeCodeA->IsSmallerThan(TimeCodeB))
-               return true;
-
-       if (TimeCodeB->IsSmallerThan(TimeCodeA))
-               return false;
-
-       // compare tracks (timecodes are equal)
-       const KaxCueTrack * TrackA = static_cast<const KaxCueTrack *>(FindElt(EBML_INFO(KaxCueTrack)));
-       if (TrackA == NULL)
-               return false;
-
-       const KaxCueTrack * TrackB = static_cast<const KaxCueTrack *>(theEltB.FindElt(EBML_INFO(KaxCueTrack)));
-       if (TrackB == NULL)
-               return false;
-
-       if (TrackA->IsSmallerThan(TrackB))
-               return true;
-
-       if (TrackB->IsSmallerThan(TrackA))
-               return false;
-
-       return false;
-}
-
-bool KaxCuePoint::Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const
-{
-       const KaxCueTime *aTime = static_cast<const KaxCueTime *>(FindFirstElt(EBML_INFO(KaxCueTime)));
-       if (aTime == NULL)
-               return false;
-       aTimecode = uint64(*aTime) * GlobalTimecodeScale;
-       return true;
-}
-
-/*!
-       \brief return the position of the Cluster to load
-*/
-const KaxCueTrackPositions * KaxCuePoint::GetSeekPosition() const
-{
-       const KaxCueTrackPositions * result = NULL;
-       uint64 aPosition = EBML_PRETTYLONGINT(0xFFFFFFFFFFFFFFF);
-       // find the position of the "earlier" Cluster
-       const KaxCueTrackPositions *aPoss = static_cast<const KaxCueTrackPositions *>(FindFirstElt(EBML_INFO(KaxCueTrackPositions)));
-       while (aPoss != NULL)
-       {
-               const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(aPoss->FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
-               if (aPos != NULL && uint64(*aPos) < aPosition) {
-                       aPosition = uint64(*aPos);
-                       result = aPoss;
-               }
-               
-               aPoss = static_cast<const KaxCueTrackPositions *>(FindNextElt(*aPoss));
-       }
-       return result;
-}
-
-uint64 KaxCueTrackPositions::ClusterPosition() const
-{
-       const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
-       if (aPos == NULL)
-               return 0;
-
-       return uint64(*aPos);
-}
-
-uint16 KaxCueTrackPositions::TrackNumber() const
-{
-       const KaxCueTrack *aTrack = static_cast<const KaxCueTrack *>(FindFirstElt(EBML_INFO(KaxCueTrack)));
-       if (aTrack == NULL)
-               return 0;
-
-       return uint16(*aTrack);
-}
-
-
-END_LIBMATROSKA_NAMESPACE
+/****************************************************************************\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: KaxCuesData.cpp 1265 2007-01-14 17:20:35Z mosu $\r
+       \author Steve Lhomme     <robux4 @ users.sf.net>\r
+*/\r
+#include <cassert>\r
+\r
+#include "matroska/KaxCuesData.h"\r
+#include "matroska/KaxContexts.h"\r
+#include "matroska/KaxBlock.h"\r
+#include "matroska/KaxBlockData.h"\r
+#include "matroska/KaxCluster.h"\r
+#include "matroska/KaxSegment.h"\r
+#include "matroska/KaxDefines.h"\r
+\r
+START_LIBMATROSKA_NAMESPACE\r
+\r
+static const EbmlSemantic ContextList_KaxCuePoint[2] =\r
+{\r
+       EbmlSemantic(true,  true,  EBML_INFO(KaxCueTime)),\r
+       EbmlSemantic(true,  false, EBML_INFO(KaxCueTrackPositions)),\r
+};\r
+\r
+#if MATROSKA_VERSION == 1\r
+static const EbmlSemantic ContextList_KaxCueTrackPositions[3] =\r
+#else // MATROSKA_VERSION\r
+static const EbmlSemantic ContextList_KaxCueTrackPositions[5] =\r
+#endif // MATROSKA_VERSION\r
+{\r
+       EbmlSemantic(true,  true,  EBML_INFO(KaxCueTrack)),\r
+       EbmlSemantic(true,  true,  EBML_INFO(KaxCueClusterPosition)),\r
+       EbmlSemantic(false, true,  EBML_INFO(KaxCueBlockNumber)),\r
+#if MATROSKA_VERSION >= 2\r
+       EbmlSemantic(false, true,  EBML_INFO(KaxCueCodecState)),\r
+       EbmlSemantic(false, false, EBML_INFO(KaxCueReference)),\r
+#endif // MATROSKA_VERSION\r
+};\r
+\r
+#if MATROSKA_VERSION >= 2\r
+static const EbmlSemantic ContextList_KaxCueReference[4] =\r
+{\r
+       EbmlSemantic(true,  true,  EBML_INFO(KaxCueRefTime)),\r
+       EbmlSemantic(true,  true,  EBML_INFO(KaxCueRefCluster)),\r
+       EbmlSemantic(false, true,  EBML_INFO(KaxCueRefNumber)),\r
+       EbmlSemantic(false, true,  EBML_INFO(KaxCueRefCodecState)),\r
+};\r
+#endif // MATROSKA_VERSION\r
+\r
+DEFINE_MKX_MASTER  (KaxCuePoint,           0xBB, 1, KaxCues, "CuePoint");\r
+DEFINE_MKX_UINTEGER(KaxCueTime,            0xB3, 1, KaxCuePoint, "CueTime");\r
+DEFINE_MKX_MASTER  (KaxCueTrackPositions,  0xB7, 1, KaxCuePoint, "CueTrackPositions");\r
+DEFINE_MKX_UINTEGER(KaxCueTrack,           0xF7, 1, KaxCueTrackPositions, "CueTrack");\r
+DEFINE_MKX_UINTEGER(KaxCueClusterPosition, 0xF1, 1, KaxCueTrackPositions, "CueClusterPosition");\r
+DEFINE_MKX_UINTEGER(KaxCueBlockNumber,   0x5378, 2, KaxCueTrackPositions, "CueBlockNumber");\r
+#if MATROSKA_VERSION >= 2\r
+DEFINE_MKX_UINTEGER(KaxCueCodecState,      0xEA, 1, KaxCueTrackPositions, "CueCodecState");\r
+DEFINE_MKX_MASTER  (KaxCueReference,       0xDB, 1, KaxCueTrackPositions, "CueReference");\r
+DEFINE_MKX_UINTEGER(KaxCueRefTime,         0x96, 1, KaxCueReference, "CueRefTime");\r
+DEFINE_MKX_UINTEGER(KaxCueRefCluster,      0x97, 1, KaxCueRefTime, "CueRefCluster");\r
+DEFINE_MKX_UINTEGER(KaxCueRefNumber,     0x535F, 2, KaxCueRefTime, "CueRefNumber");\r
+DEFINE_MKX_UINTEGER(KaxCueRefCodecState,   0xEB, 1, KaxCueRefTime, "CueRefCodecState");\r
+#endif\r
+\r
+KaxCuePoint::KaxCuePoint() \r
+ :EbmlMaster(KaxCuePoint_Context)\r
+{}\r
+\r
+KaxCueTrackPositions::KaxCueTrackPositions()\r
+ :EbmlMaster(KaxCueTrackPositions_Context)\r
+{}\r
+\r
+#if MATROSKA_VERSION >= 2\r
+KaxCueReference::KaxCueReference()\r
+ :EbmlMaster(KaxCueReference_Context)\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
+*/\r
+void KaxCuePoint::PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale)\r
+{\r
+       // fill me\r
+       KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);\r
+       *static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;\r
+\r
+       KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);\r
+       KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);\r
+       *static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNumber();\r
+       \r
+       KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);\r
+       *static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();\r
+\r
+#if MATROSKA_VERSION >= 2\r
+       // handle reference use\r
+       if (BlockReference.ReferenceCount() != 0)\r
+       {\r
+               unsigned int i;\r
+               for (i=0; i<BlockReference.ReferenceCount(); i++) {\r
+                       KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);\r
+                       NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);\r
+               }\r
+       }\r
+\r
+       KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockReference.FindFirstElt(EBML_INFO(KaxCodecState)));\r
+       if (CodecState != NULL) {\r
+               KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);\r
+               *static_cast<EbmlUInteger*>(&CueCodecState) = BlockReference.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());\r
+       }\r
+#endif // MATROSKA_VERSION\r
+\r
+       SetValueIsSet();\r
+}\r
+\r
+void KaxCuePoint::PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale)\r
+{\r
+       const KaxInternalBlock &BlockReference = BlobReference;\r
+\r
+       // fill me\r
+       KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);\r
+       *static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;\r
+\r
+       KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);\r
+       KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);\r
+       *static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNum();\r
+       \r
+       KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);\r
+       *static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();\r
+\r
+#if 0 // MATROSKA_VERSION >= 2\r
+       // handle reference use\r
+       if (BlockReference.ReferenceCount() != 0)\r
+       {\r
+               unsigned int i;\r
+               for (i=0; i<BlockReference.ReferenceCount(); i++) {\r
+                       KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);\r
+                       NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);\r
+               }\r
+       }\r
+#endif // MATROSKA_VERSION\r
+\r
+#if MATROSKA_VERSION >= 2\r
+       if (!BlobReference.IsSimpleBlock()) {\r
+               const KaxBlockGroup &BlockGroup = BlobReference;\r
+               const KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockGroup.FindFirstElt(EBML_INFO(KaxCodecState)));\r
+               if (CodecState != NULL) {\r
+                       KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);\r
+                       *static_cast<EbmlUInteger*>(&CueCodecState) = BlockGroup.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());\r
+               }\r
+       }\r
+#endif // MATROSKA_VERSION\r
+\r
+       SetValueIsSet();\r
+}\r
+\r
+#if MATROSKA_VERSION >= 2\r
+/*!\r
+       \todo handle codec state checking\r
+*/\r
+void KaxCueReference::AddReference(const KaxBlockBlob & BlockReference, uint64 GlobalTimecodeScale)\r
+{\r
+       const KaxInternalBlock & theBlock = BlockReference;\r
+       KaxCueRefTime & NewTime = GetChild<KaxCueRefTime>(*this);\r
+       *static_cast<EbmlUInteger*>(&NewTime) = theBlock.GlobalTimecode() / GlobalTimecodeScale;\r
+\r
+       KaxCueRefCluster & TheClustPos = GetChild<KaxCueRefCluster>(*this);\r
+       *static_cast<EbmlUInteger*>(&TheClustPos) = theBlock.ClusterPosition();\r
+\r
+#ifdef OLD\r
+       // handle recursive reference use\r
+       if (BlockReference.ReferenceCount() != 0)\r
+       {\r
+               unsigned int i;\r
+               for (i=0; i<BlockReference.ReferenceCount(); i++) {\r
+                       AddReference(BlockReference.Reference(i).RefBlock());\r
+               }\r
+       }\r
+#endif /* OLD */\r
+}\r
+#endif\r
+\r
+bool KaxCuePoint::IsSmallerThan(const EbmlElement * EltB) const\r
+{\r
+       assert(EbmlId(*this) == EBML_ID(KaxCuePoint));\r
+       assert(EbmlId(*EltB) == EBML_ID(KaxCuePoint));\r
+\r
+       const KaxCuePoint & theEltB = *static_cast<const KaxCuePoint *>(EltB);\r
+\r
+       // compare timecode\r
+       const KaxCueTime * TimeCodeA = static_cast<const KaxCueTime *>(FindElt(EBML_INFO(KaxCueTime)));\r
+       if (TimeCodeA == NULL)\r
+               return false;\r
+\r
+       const KaxCueTime * TimeCodeB = static_cast<const KaxCueTime *>(theEltB.FindElt(EBML_INFO(KaxCueTime)));\r
+       if (TimeCodeB == NULL)\r
+               return false;\r
+\r
+       if (TimeCodeA->IsSmallerThan(TimeCodeB))\r
+               return true;\r
+\r
+       if (TimeCodeB->IsSmallerThan(TimeCodeA))\r
+               return false;\r
+\r
+       // compare tracks (timecodes are equal)\r
+       const KaxCueTrack * TrackA = static_cast<const KaxCueTrack *>(FindElt(EBML_INFO(KaxCueTrack)));\r
+       if (TrackA == NULL)\r
+               return false;\r
+\r
+       const KaxCueTrack * TrackB = static_cast<const KaxCueTrack *>(theEltB.FindElt(EBML_INFO(KaxCueTrack)));\r
+       if (TrackB == NULL)\r
+               return false;\r
+\r
+       if (TrackA->IsSmallerThan(TrackB))\r
+               return true;\r
+\r
+       if (TrackB->IsSmallerThan(TrackA))\r
+               return false;\r
+\r
+       return false;\r
+}\r
+\r
+bool KaxCuePoint::Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const\r
+{\r
+       const KaxCueTime *aTime = static_cast<const KaxCueTime *>(FindFirstElt(EBML_INFO(KaxCueTime)));\r
+       if (aTime == NULL)\r
+               return false;\r
+       aTimecode = uint64(*aTime) * GlobalTimecodeScale;\r
+       return true;\r
+}\r
+\r
+/*!\r
+       \brief return the position of the Cluster to load\r
+*/\r
+const KaxCueTrackPositions * KaxCuePoint::GetSeekPosition() const\r
+{\r
+       const KaxCueTrackPositions * result = NULL;\r
+       uint64 aPosition = EBML_PRETTYLONGINT(0xFFFFFFFFFFFFFFF);\r
+       // find the position of the "earlier" Cluster\r
+       const KaxCueTrackPositions *aPoss = static_cast<const KaxCueTrackPositions *>(FindFirstElt(EBML_INFO(KaxCueTrackPositions)));\r
+       while (aPoss != NULL)\r
+       {\r
+               const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(aPoss->FindFirstElt(EBML_INFO(KaxCueClusterPosition)));\r
+               if (aPos != NULL && uint64(*aPos) < aPosition) {\r
+                       aPosition = uint64(*aPos);\r
+                       result = aPoss;\r
+               }\r
+               \r
+               aPoss = static_cast<const KaxCueTrackPositions *>(FindNextElt(*aPoss));\r
+       }\r
+       return result;\r
+}\r
+\r
+uint64 KaxCueTrackPositions::ClusterPosition() const\r
+{\r
+       const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(FindFirstElt(EBML_INFO(KaxCueClusterPosition)));\r
+       if (aPos == NULL)\r
+               return 0;\r
+\r
+       return uint64(*aPos);\r
+}\r
+\r
+uint16 KaxCueTrackPositions::TrackNumber() const\r
+{\r
+       const KaxCueTrack *aTrack = static_cast<const KaxCueTrack *>(FindFirstElt(EBML_INFO(KaxCueTrack)));\r
+       if (aTrack == NULL)\r
+               return 0;\r
+\r
+       return uint16(*aTrack);\r
+}\r
+\r
+\r
+END_LIBMATROSKA_NAMESPACE\r
index 3e66c965059b39a916edcb309df6a1d42b345881..2c4261de1afc4247b394d245caf6e4a3e76df7b9 100644 (file)
 #include "matroska/KaxInfoData.h"\r
 \r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 // sub elements\r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-const EbmlSemantic KaxInfo_ContextList[14] =\r
+static const EbmlSemantic ContextList_KaxInfo[14] =\r
 {\r
        EbmlSemantic(false, true,  EBML_INFO(KaxSegmentUID)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxSegmentFilename)),\r
@@ -58,17 +59,9 @@ const EbmlSemantic KaxInfo_ContextList[14] =
        EbmlSemantic(true,  true,  EBML_INFO(KaxWritingApp)),\r
 };\r
 \r
-const EbmlSemanticContext KaxInfo_Context = EbmlSemanticContext(countof(KaxInfo_ContextList), KaxInfo_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxInfo));\r
-const EbmlSemanticContext KaxMuxingApp_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxMuxingApp));\r
-const EbmlSemanticContext KaxWritingApp_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxWritingApp));\r
-\r
-EbmlId KaxInfo_TheId      (0x1549A966, 4);\r
-EbmlId KaxMuxingApp_TheId (0x4D80, 2);\r
-EbmlId KaxWritingApp_TheId(0x5741, 2);\r
-\r
-const EbmlCallbacks KaxInfo::ClassInfos(KaxInfo::Create, KaxInfo_TheId, "Info", KaxInfo_Context);\r
-const EbmlCallbacks KaxMuxingApp::ClassInfos(KaxMuxingApp::Create, KaxMuxingApp_TheId, "MuxingApp", KaxMuxingApp_Context);\r
-const EbmlCallbacks KaxWritingApp::ClassInfos(KaxWritingApp::Create, KaxWritingApp_TheId, "WritingApp", KaxWritingApp_Context);\r
+DEFINE_MKX_MASTER   (KaxInfo,   0x1549A966, 4, KaxSegment, "Info");\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
index aad60a4cd2c401d5a5f2cc575714ec7928f121b5..53a2f972517515bedce8f41679eed09287edd474 100644 (file)
 */\r
 #include "matroska/KaxInfoData.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-const EbmlSemantic KaxChapterTranslate_ContextList[3] =\r
+static const EbmlSemantic ContextList_KaxChapterTranslate[3] =\r
 {\r
        EbmlSemantic(false, false, EBML_INFO(KaxChapterTranslateEditionUID)),\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxChapterTranslateCodec)),\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxChapterTranslateID)),\r
 };\r
 \r
-EbmlId KaxSegmentUID_TheId      (0x73A4, 2);\r
-EbmlId KaxSegmentFilename_TheId (0x7384, 2);\r
-EbmlId KaxPrevUID_TheId         (0x3CB923, 3);\r
-EbmlId KaxPrevFilename_TheId    (0x3C83AB, 3);\r
-EbmlId KaxNextUID_TheId         (0x3EB923, 3);\r
-EbmlId KaxNextFilename_TheId    (0x3E83BB, 3);\r
-EbmlId KaxSegmentFamily_TheId   (0x4444, 2);\r
-EbmlId KaxChapterTranslate_TheId(0x6924, 2);\r
-EbmlId KaxChapterTranslateEditionUID_TheId(0x69FC, 2);\r
-EbmlId KaxChapterTranslateCodec_TheId(0x69BF, 2);\r
-EbmlId KaxChapterTranslateID_TheId(0x69A5, 2);\r
-EbmlId KaxTimecodeScale_TheId   (0x2AD7B1, 3);\r
-EbmlId KaxDuration_TheId        (0x4489, 2);\r
-EbmlId KaxDateUTC_TheId         (0x4461, 2);\r
-EbmlId KaxTitle_TheId           (0x7BA9, 2);\r
-\r
-const EbmlSemanticContext KaxSegmentUID_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSegmentUID));\r
-const EbmlSemanticContext KaxSegmentFilename_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSegmentFilename));\r
-const EbmlSemanticContext KaxPrevUID_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxPrevUID));\r
-const EbmlSemanticContext KaxPrevFilename_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxPrevFilename));\r
-const EbmlSemanticContext KaxNextUID_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxNextUID));\r
-const EbmlSemanticContext KaxNextFilename_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxNextFilename));\r
-const EbmlSemanticContext KaxSegmentFamily_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSegmentFamily));\r
-const EbmlSemanticContext KaxChapterTranslate_Context = EbmlSemanticContext(countof(KaxChapterTranslate_ContextList), KaxChapterTranslate_ContextList, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslate));\r
-const EbmlSemanticContext KaxChapterTranslateEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslateEditionUID));\r
-const EbmlSemanticContext KaxChapterTranslateCodec_Context = EbmlSemanticContext(0, NULL, &KaxChapterTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslateCodec));\r
-const EbmlSemanticContext KaxChapterTranslateID_Context = EbmlSemanticContext(0, NULL, &KaxChapterTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslateID));\r
-const EbmlSemanticContext KaxTimecodeScale_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTimecodeScale));\r
-const EbmlSemanticContext KaxDuration_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxDuration));\r
-const EbmlSemanticContext KaxDateUTC_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxDateUTC));\r
-const EbmlSemanticContext KaxTitle_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTitle));\r
-\r
-\r
-const EbmlCallbacks KaxSegmentUID::ClassInfos(KaxSegmentUID::Create, KaxSegmentUID_TheId, "SegmentUID", KaxSegmentUID_Context);\r
-const EbmlCallbacks KaxSegmentFilename::ClassInfos(KaxSegmentFilename::Create, KaxSegmentFilename_TheId, "SegmentFilename", KaxSegmentFilename_Context);\r
-const EbmlCallbacks KaxPrevUID::ClassInfos(KaxPrevUID::Create, KaxPrevUID_TheId, "PrevUID", KaxPrevUID_Context);\r
-const EbmlCallbacks KaxPrevFilename::ClassInfos(KaxPrevFilename::Create, KaxPrevFilename_TheId, "PrevFilename", KaxPrevFilename_Context);\r
-const EbmlCallbacks KaxNextUID::ClassInfos(KaxNextUID::Create, KaxNextUID_TheId, "NextUID", KaxNextUID_Context);\r
-const EbmlCallbacks KaxNextFilename::ClassInfos(KaxNextFilename::Create, KaxNextFilename_TheId, "NextFilename", KaxNextFilename_Context);\r
-const EbmlCallbacks KaxSegmentFamily::ClassInfos(KaxSegmentFamily::Create, KaxSegmentFamily_TheId, "SegmentFamily", KaxSegmentFamily_Context);\r
-const EbmlCallbacks KaxChapterTranslate::ClassInfos(KaxChapterTranslate::Create, KaxChapterTranslate_TheId, "ChapterTranslate", KaxChapterTranslate_Context);\r
-const EbmlCallbacks KaxChapterTranslateEditionUID::ClassInfos(KaxChapterTranslateEditionUID::Create, KaxChapterTranslateEditionUID_TheId, "ChapterTranslateEditionUID", KaxChapterTranslateEditionUID_Context);\r
-const EbmlCallbacks KaxChapterTranslateCodec::ClassInfos(KaxChapterTranslateCodec::Create, KaxChapterTranslateCodec_TheId, "ChapterTranslateCodec", KaxChapterTranslateCodec_Context);\r
-const EbmlCallbacks KaxChapterTranslateID::ClassInfos(KaxChapterTranslateID::Create, KaxChapterTranslateID_TheId, "ChapterTranslateID", KaxChapterTranslateID_Context);\r
-const EbmlCallbacks KaxTimecodeScale::ClassInfos(KaxTimecodeScale::Create, KaxTimecodeScale_TheId, "TimecodeScale", KaxTimecodeScale_Context);\r
-const EbmlCallbacks KaxDuration::ClassInfos(KaxDuration::Create, KaxDuration_TheId, "Duration", KaxDuration_Context);\r
-const EbmlCallbacks KaxDateUTC::ClassInfos(KaxDateUTC::Create, KaxDateUTC_TheId, "DateUTC", KaxDateUTC_Context);\r
-const EbmlCallbacks KaxTitle::ClassInfos(KaxTitle::Create, KaxTitle_TheId, "Title", KaxTitle_Context);\r
+DEFINE_MKX_BINARY   (KaxSegmentUID,                 0x73A4, 2, KaxInfo, "ChapterTranslate");\r
+DEFINE_MKX_UNISTRING(KaxSegmentFilename,            0x7384, 2, KaxInfo, "SegmentFilename");\r
+DEFINE_MKX_BINARY   (KaxPrevUID,                  0x3CB923, 3, KaxInfo, "PrevUID");\r
+DEFINE_MKX_UNISTRING(KaxPrevFilename,             0x3C83AB, 3, KaxInfo, "PrevFilename");\r
+DEFINE_MKX_BINARY   (KaxNextUID,                  0x3EB923, 3, KaxInfo, "NextUID");\r
+DEFINE_MKX_UNISTRING(KaxNextFilename,             0x3E83BB, 3, KaxInfo, "NextFilename");\r
+DEFINE_MKX_BINARY   (KaxSegmentFamily,              0x4444, 2, KaxInfo, "SegmentFamily");\r
+DEFINE_MKX_MASTER   (KaxChapterTranslate,           0x6924, 2, KaxInfo, "ChapterTranslate");\r
+DEFINE_MKX_UINTEGER (KaxChapterTranslateEditionUID, 0x69FC, 2, KaxChapterTranslate, "ChapterTranslateEditionUID");\r
+DEFINE_MKX_UINTEGER (KaxChapterTranslateCodec,      0x69BF, 2, KaxChapterTranslate, "ChapterTranslateCodec");\r
+DEFINE_MKX_BINARY   (KaxChapterTranslateID,         0x69A5, 2, KaxChapterTranslate, "ChapterTranslateID");\r
+DEFINE_MKX_UINTEGER (KaxTimecodeScale,            0x2AD7B1, 3, KaxInfo, "TimecodeScale");\r
+DEFINE_MKX_FLOAT    (KaxDuration,                   0x4489, 2, KaxInfo, "Duration");\r
+DEFINE_MKX_DATE     (KaxDateUTC,                    0x4461, 2, KaxInfo, "DateUTC");\r
+DEFINE_MKX_UNISTRING(KaxTitle,                      0x7BA9, 2, KaxInfo, "Title");\r
 \r
 KaxChapterTranslate::KaxChapterTranslate()\r
        :EbmlMaster(KaxChapterTranslate_Context)\r
index 1853afd46694ba50a86990fe04d9cadf1a727470..c402d088d1f946707775e4ce7cf02eb88df62359 100644 (file)
 #include "matroska/KaxContexts.h"\r
 #include "matroska/KaxSegment.h"\r
 #include "matroska/KaxCues.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 using namespace LIBEBML_NAMESPACE;\r
 \r
 // sub elements\r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-EbmlSemantic KaxSeekHead_ContextList[1] = \r
+static const EbmlSemantic ContextList_KaxSeekHead[1] =\r
 {\r
        EbmlSemantic(true,  false,  EBML_INFO(KaxSeek)),\r
 };\r
 \r
-EbmlSemantic KaxSeek_ContextList[2] = \r
+static const EbmlSemantic ContextList_KaxSeek[2] = \r
 {\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxSeekID)),\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxSeekPosition)),\r
 };\r
 \r
-const EbmlSemanticContext KaxSeekHead_Context = EbmlSemanticContext(countof(KaxSeekHead_ContextList), KaxSeekHead_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeekHead));\r
-const EbmlSemanticContext KaxSeek_Context = EbmlSemanticContext(countof(KaxSeek_ContextList), KaxSeek_ContextList, &KaxSeekHead_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeek));\r
-const EbmlSemanticContext KaxSeekID_Context = EbmlSemanticContext(0, NULL, &KaxSeek_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeekID));\r
-const EbmlSemanticContext KaxSeekPosition_Context = EbmlSemanticContext(0, NULL, &KaxSeek_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeekPosition));\r
-\r
-EbmlId KaxSeekHead_TheId    (0x114D9B74, 4);\r
-EbmlId KaxSeek_TheId        (0x4DBB, 2);\r
-EbmlId KaxSeekID_TheId      (0x53AB, 2);\r
-EbmlId KaxSeekPosition_TheId(0x53AC, 2);\r
-\r
-const EbmlCallbacks KaxSeekHead::ClassInfos(KaxSeekHead::Create, KaxSeekHead_TheId, "SeekHeader", KaxSeekHead_Context);\r
-const EbmlCallbacks KaxSeek::ClassInfos(KaxSeek::Create, KaxSeek_TheId, "SeekPoint", KaxSeek_Context);\r
-const EbmlCallbacks KaxSeekID::ClassInfos(KaxSeekID::Create, KaxSeekID_TheId, "SeekID", KaxSeekID_Context);\r
-const EbmlCallbacks KaxSeekPosition::ClassInfos(KaxSeekPosition::Create, KaxSeekPosition_TheId, "SeekPosition", KaxSeekPosition_Context);\r
+DEFINE_MKX_MASTER  (KaxSeekHead, 0x114D9B74, 4, KaxSegment, "SeekHeader");\r
+DEFINE_MKX_MASTER  (KaxSeek,         0x4DBB, 2, KaxSeekHead, "SeekPoint");\r
+DEFINE_MKX_BINARY  (KaxSeekID,       0x53AB, 2, KaxSeek, "SeekID");\r
+DEFINE_MKX_UINTEGER(KaxSeekPosition, 0x53AC, 2, KaxSeek, "SeekPosition");\r
 \r
 KaxSeekHead::KaxSeekHead()\r
        :EbmlMaster(KaxSeekHead_Context)\r
index ab09e51deba77de084b132a5105bf7e6de7565a1..73632acaa7503e2becd88c81a0081029a0adbb0c 100644 (file)
 #include "matroska/KaxAttachments.h"\r
 #include "matroska/KaxTags.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-EbmlSemantic KaxMatroska_ContextList[2] =\r
+static const EbmlSemantic ContextList_KaxMatroska[2] =\r
 {\r
        EbmlSemantic(true, true,  EBML_INFO(EbmlHead)),\r
        EbmlSemantic(true, false, EBML_INFO(KaxSegment)),\r
 };\r
 \r
-EbmlSemantic KaxSegment_ContextList[8] =\r
+static const EbmlSemantic ContextList_KaxSegment[8] =\r
 {\r
        EbmlSemantic(false, false, EBML_INFO(KaxCluster)),\r
        EbmlSemantic(false, false, EBML_INFO(KaxSeekHead)),\r
@@ -66,11 +67,8 @@ EbmlSemantic KaxSegment_ContextList[8] =
        EbmlSemantic(false, true,  EBML_INFO(KaxTags)),\r
 };\r
 \r
-const EbmlSemanticContext KaxMatroska_Context = EbmlSemanticContext(countof(KaxMatroska_ContextList), KaxMatroska_ContextList, NULL, *GetKaxGlobal_Context, NULL);\r
-const EbmlSemanticContext KaxSegment_Context = EbmlSemanticContext(countof(KaxSegment_ContextList), KaxSegment_ContextList, NULL, *GetKaxGlobal_Context, &EBML_INFO(KaxSegment));\r
-\r
-EbmlId KaxSegment_TheId(0x18538067, 4);\r
-const EbmlCallbacks KaxSegment::ClassInfos(KaxSegment::Create, KaxSegment_TheId, "Segment\0rotomopogo", KaxSegment_Context);\r
+DEFINE_MKX_MASTER_GLOBAL(KaxMatroska, -1, 5, "Matroska");\r
+DEFINE_MKX_MASTER_ORPHAN(KaxSegment, 0x18538067, 4, "Segment\0rotomopogo");\r
 \r
 KaxSegment::KaxSegment()\r
        :EbmlMaster(KaxSegment_Context)\r
index 4beb39b9e6855cdca3bde39aab9831f944660b5e..0b9874de361797b22716447ae536d1a769be74ce 100644 (file)
 #include "matroska/KaxTags.h"\r
 #include "matroska/KaxTag.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 using namespace LIBEBML_NAMESPACE;\r
 \r
 // sub elements\r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-EbmlSemantic KaxTags_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTags[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxTag)),\r
 };\r
 \r
-const EbmlSemanticContext KaxTags_Context = EbmlSemanticContext(countof(KaxTags_ContextList), KaxTags_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTags));\r
-\r
-EbmlId KaxTags_TheId(0x1254C367, 4);\r
-\r
-const EbmlCallbacks KaxTags::ClassInfos(KaxTags::Create, KaxTags_TheId, "Tags", KaxTags_Context);\r
+DEFINE_MKX_MASTER(KaxTags, 0x1254C367, 4, KaxSegment, "Tags");\r
 \r
 KaxTags::KaxTags()\r
        :EbmlMaster(KaxTags_Context)\r
index 8cb7dd5eb89a84b2dbce38176a773cf4feb1b587..b40164652f602aed7b63634d9bb1abdfbb8997e9 100644 (file)
 \r
 // sub elements\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
 #if MATROSKA_VERSION == 1\r
-const EbmlSemantic KaxTrackAudio_ContextList[4] =\r
+static const EbmlSemantic ContextList_KaxTrackAudio[4] =\r
 #else // MATROSKA_VERSION\r
-const EbmlSemantic KaxTrackAudio_ContextList[5] =\r
+static const EbmlSemantic ContextList_KaxTrackAudio[5] =\r
 #endif // MATROSKA_VERSION\r
 {\r
        EbmlSemantic(true , true, EBML_INFO(KaxAudioSamplingFreq)),\r
@@ -54,32 +55,14 @@ const EbmlSemantic KaxTrackAudio_ContextList[5] =
 #endif // MATROSKA_VERSION\r
 };\r
 \r
-const EbmlSemanticContext KaxTrackAudio_Context = EbmlSemanticContext(countof(KaxTrackAudio_ContextList), KaxTrackAudio_ContextList, &KaxTrackEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackAudio));\r
-const EbmlSemanticContext KaxAudioSamplingFreq_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioSamplingFreq));\r
-const EbmlSemanticContext KaxAudioOutputSamplingFreq_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioOutputSamplingFreq));\r
-const EbmlSemanticContext KaxAudioChannels_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioChannels));\r
-const EbmlSemanticContext KaxAudioBitDepth_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioBitDepth));\r
+DEFINE_MKX_MASTER  (KaxTrackAudio,                0xE1, 1, KaxTrackEntry, "TrackAudio");\r
+DEFINE_MKX_FLOAT   (KaxAudioSamplingFreq,         0xB5, 1, KaxTrackAudio, "AudioSamplingFreq");\r
+DEFINE_MKX_FLOAT   (KaxAudioOutputSamplingFreq, 0x78B5, 2, KaxTrackAudio, "AudioOutputSamplingFreq");\r
+DEFINE_MKX_UINTEGER(KaxAudioChannels,             0x9F, 1, KaxTrackAudio, "AudioChannels");\r
+DEFINE_MKX_UINTEGER(KaxAudioBitDepth,           0x6264, 2, KaxTrackAudio, "AudioBitDepth");\r
 #if MATROSKA_VERSION >= 2\r
-const EbmlSemanticContext KaxAudioPosition_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioPosition));\r
-#endif // MATROSKA_VERSION\r
-\r
-EbmlId KaxTrackAudio_TheId       (0xE1, 1);\r
-EbmlId KaxAudioSamplingFreq_TheId(0xB5, 1);\r
-EbmlId KaxAudioOutputSamplingFreq_TheId(0x78B5, 2);\r
-EbmlId KaxAudioChannels_TheId    (0x9F, 1);\r
-EbmlId KaxAudioBitDepth_TheId    (0x6264, 2);\r
-#if MATROSKA_VERSION >= 2\r
-EbmlId KaxAudioPosition_TheId    (0x7D7B, 2);\r
-#endif // MATROSKA_VERSION\r
-\r
-const EbmlCallbacks KaxTrackAudio::ClassInfos(KaxTrackAudio::Create, KaxTrackAudio_TheId, "TrackAudio", KaxTrackAudio_Context);\r
-const EbmlCallbacks KaxAudioSamplingFreq::ClassInfos(KaxAudioSamplingFreq::Create, KaxAudioSamplingFreq_TheId, "AudioSamplingFreq", KaxAudioSamplingFreq_Context);\r
-const EbmlCallbacks KaxAudioOutputSamplingFreq::ClassInfos(KaxAudioOutputSamplingFreq::Create, KaxAudioOutputSamplingFreq_TheId, "AudioOutputSamplingFreq", KaxAudioOutputSamplingFreq_Context);\r
-const EbmlCallbacks KaxAudioChannels::ClassInfos(KaxAudioChannels::Create, KaxAudioChannels_TheId, "AudioChannels", KaxAudioChannels_Context);\r
-const EbmlCallbacks KaxAudioBitDepth::ClassInfos(KaxAudioBitDepth::Create, KaxAudioBitDepth_TheId, "AudioBitDepth", KaxAudioBitDepth_Context);\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlCallbacks KaxAudioPosition::ClassInfos(KaxAudioPosition::Create, KaxAudioPosition_TheId, "AudioPosition", KaxAudioPosition_Context);\r
-#endif // MATROSKA_VERSION\r
+DEFINE_MKX_BINARY  (KaxAudioPosition,           0x7D7B, 2, KaxTrackAudio, "AudioPosition");\r
+#endif\r
 \r
 KaxTrackAudio::KaxTrackAudio()\r
        :EbmlMaster(KaxTrackAudio_Context)\r
index 6bccf8b94f8ff7431f6284524927d6805efa1d6a..fc337e3fdf4761ce2f2df53c3585ef2d38c8b399 100644 (file)
 */\r
 #include "matroska/KaxTrackEntryData.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-const EbmlSemantic KaxTrackTranslate_ContextList[3] =\r
+static const EbmlSemantic ContextList_KaxTrackTranslate[3] =\r
 {\r
        EbmlSemantic(false, false,EBML_INFO(KaxTrackTranslateEditionUID)),\r
        EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateCodec)),\r
        EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateTrackID)),\r
 };\r
 \r
-EbmlId KaxTrackNumber_TheId            (0xD7, 1);\r
-EbmlId KaxTrackUID_TheId               (0x73C5, 2);\r
-EbmlId KaxTrackType_TheId              (0x83, 1);\r
-EbmlId KaxTrackFlagDefault_TheId       (0x88, 1);\r
-EbmlId KaxTrackFlagForced_TheId        (0x55AA, 2);\r
-EbmlId KaxTrackFlagLacing_TheId        (0x9C, 1);\r
-EbmlId KaxTrackMinCache_TheId          (0x6DE7, 2);\r
-EbmlId KaxTrackMaxCache_TheId          (0x6DF8, 2);\r
-EbmlId KaxTrackDefaultDuration_TheId   (0x23E383, 3);\r
-EbmlId KaxTrackTimecodeScale_TheId     (0x23314F, 3);\r
-EbmlId KaxMaxBlockAdditionID_TheId     (0x55EE, 2);\r
-EbmlId KaxTrackName_TheId              (0x536E, 2);\r
-EbmlId KaxTrackLanguage_TheId          (0x22B59C, 3);\r
-EbmlId KaxCodecID_TheId                (0x86, 1);\r
-EbmlId KaxCodecPrivate_TheId           (0x63A2, 2);\r
-EbmlId KaxCodecName_TheId              (0x258688, 3);\r
-EbmlId KaxTrackAttachmentLink_TheId    (0x7446, 2);\r
-EbmlId KaxTrackOverlay_TheId           (0x6FAB, 2);\r
-EbmlId KaxTrackTranslate_TheId         (0x6624, 2);\r
-EbmlId KaxTrackTranslateEditionUID_TheId(0x66FC, 2);\r
-EbmlId KaxTrackTranslateCodec_TheId    (0x66BF, 2);\r
-EbmlId KaxTrackTranslateTrackID_TheId  (0x66A5, 2);\r
+DEFINE_MKX_UINTEGER (KaxTrackNumber,                0xD7, 1, KaxTracks, "TrackNumber");\r
+DEFINE_MKX_UINTEGER (KaxTrackUID,                 0x73C5, 2, KaxTracks, "TrackUID");\r
+DEFINE_MKX_UINTEGER (KaxTrackType,                  0x83, 1, KaxTracks, "TrackType");\r
+DEFINE_MKX_UINTEGER (KaxTrackFlagDefault,           0x88, 1, KaxTracks, "TrackFlagEnabled");\r
+DEFINE_MKX_UINTEGER (KaxTrackFlagForced,          0x55AA, 2, KaxTracks, "TrackFlagForced");\r
+DEFINE_MKX_UINTEGER (KaxTrackFlagLacing,            0x9C, 1, KaxTracks, "TrackFlagLacing");\r
+DEFINE_MKX_UINTEGER (KaxTrackMinCache,            0x6DE7, 2, KaxTracks, "TrackMinCache");\r
+DEFINE_MKX_UINTEGER (KaxTrackMaxCache,            0x6DF8, 2, KaxTracks, "TrackMaxCache\0rotomodobopo");\r
+DEFINE_MKX_UINTEGER (KaxTrackDefaultDuration,   0x23E383, 3, KaxTracks, "TrackDefaultDuration");\r
+DEFINE_MKX_FLOAT    (KaxTrackTimecodeScale,     0x23314F, 3, KaxTracks, "TrackTimecodeScale");\r
+DEFINE_MKX_UINTEGER (KaxMaxBlockAdditionID,       0x55EE, 2, KaxTracks, "MaxBlockAdditionID");\r
+DEFINE_MKX_UNISTRING(KaxTrackName,                0x536E, 2, KaxTracks, "TrackName");\r
+DEFINE_MKX_STRING   (KaxTrackLanguage,          0x22B59C, 3, KaxTracks, "TrackLanguage");\r
+DEFINE_MKX_STRING   (KaxCodecID,                    0x86, 1, KaxTracks, "CodecID");\r
+DEFINE_MKX_BINARY   (KaxCodecPrivate,             0x63A2, 2, KaxTracks, "CodecPrivate");\r
+DEFINE_MKX_UNISTRING(KaxCodecName,              0x258688, 3, KaxTracks, "CodecName");\r
+DEFINE_MKX_BINARY   (KaxTrackAttachmentLink,      0x7446, 2, KaxTracks, "TrackAttachmentLink");\r
+DEFINE_MKX_UINTEGER (KaxTrackOverlay,             0x6FAB, 2, KaxTracks, "TrackOverlay");\r
+DEFINE_MKX_MASTER   (KaxTrackTranslate,           0x6624, 2, KaxTracks, "TrackTranslate");\r
+DEFINE_MKX_UINTEGER (KaxTrackTranslateEditionUID, 0x66FC, 2, KaxTrackTranslate, "TrackTranslateEditionUID");\r
+DEFINE_MKX_UINTEGER (KaxTrackTranslateCodec,      0x66BF, 2, KaxTrackTranslate, "TrackTranslateCodec");\r
+DEFINE_MKX_BINARY   (KaxTrackTranslateTrackID,    0x66A5, 2, KaxTrackTranslate, "TrackTranslateTrackID");\r
 #if MATROSKA_VERSION >= 2\r
-EbmlId KaxTrackFlagEnabled_TheId       (0xB9, 1);\r
-EbmlId KaxCodecSettings_TheId          (0x3A9697, 3);\r
-EbmlId KaxCodecInfoURL_TheId           (0x3B4040, 3);\r
-EbmlId KaxCodecDownloadURL_TheId       (0x26B240, 3);\r
-EbmlId KaxCodecDecodeAll_TheId         (0xAA, 1);\r
-#endif // MATROSKA_VERSION\r
-\r
-const EbmlSemanticContext KaxTrackNumber_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackNumber));\r
-const EbmlSemanticContext KaxTrackUID_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackUID));\r
-const EbmlSemanticContext KaxTrackType_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackType));\r
-const EbmlSemanticContext KaxTrackFlagDefault_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagDefault));\r
-const EbmlSemanticContext KaxTrackFlagForced_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagForced));\r
-const EbmlSemanticContext KaxTrackFlagLacing_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagLacing));\r
-const EbmlSemanticContext KaxTrackMinCache_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackMinCache));\r
-const EbmlSemanticContext KaxTrackMaxCache_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackMaxCache));\r
-const EbmlSemanticContext KaxTrackDefaultDuration_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackDefaultDuration));\r
-const EbmlSemanticContext KaxTrackTimecodeScale_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTimecodeScale));\r
-const EbmlSemanticContext KaxMaxBlockAdditionID_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxMaxBlockAdditionID));\r
-const EbmlSemanticContext KaxTrackName_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackName));\r
-const EbmlSemanticContext KaxTrackLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackLanguage));\r
-const EbmlSemanticContext KaxCodecID_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecID));\r
-const EbmlSemanticContext KaxCodecPrivate_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecPrivate));\r
-const EbmlSemanticContext KaxCodecName_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecName));\r
-const EbmlSemanticContext KaxTrackAttachmentLink_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackAttachmentLink));\r
-const EbmlSemanticContext KaxTrackOverlay_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackOverlay));\r
-const EbmlSemanticContext KaxTrackTranslate_Context = EbmlSemanticContext(countof(KaxTrackTranslate_ContextList), KaxTrackTranslate_ContextList, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslate));\r
-const EbmlSemanticContext KaxTrackTranslateEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxTrackTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslateEditionUID));\r
-const EbmlSemanticContext KaxTrackTranslateCodec_Context = EbmlSemanticContext(0, NULL, &KaxTrackTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslateCodec));\r
-const EbmlSemanticContext KaxTrackTranslateTrackID_Context = EbmlSemanticContext(0, NULL, &KaxTrackTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslateTrackID));\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlSemanticContext KaxTrackFlagEnabled_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagEnabled));\r
-const EbmlSemanticContext KaxCodecSettings_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecSettings));\r
-const EbmlSemanticContext KaxCodecInfoURL_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecInfoURL));\r
-const EbmlSemanticContext KaxCodecDownloadURL_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecDownloadURL));\r
-const EbmlSemanticContext KaxCodecDecodeAll_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecDecodeAll));\r
-#endif // MATROSKA_VERSION\r
-\r
-const EbmlCallbacks KaxTrackNumber::ClassInfos(KaxTrackNumber::Create, KaxTrackNumber_TheId, "TrackNumber", KaxTrackNumber_Context);\r
-const EbmlCallbacks KaxTrackUID::ClassInfos(KaxTrackUID::Create, KaxTrackUID_TheId, "TrackUID", KaxTrackUID_Context);\r
-const EbmlCallbacks KaxTrackType::ClassInfos(KaxTrackType::Create, KaxTrackType_TheId, "TrackType", KaxTrackType_Context);\r
-const EbmlCallbacks KaxTrackFlagDefault::ClassInfos(KaxTrackFlagDefault::Create, KaxTrackFlagDefault_TheId, "TrackFlagDefault", KaxTrackFlagDefault_Context);\r
-const EbmlCallbacks KaxTrackFlagForced::ClassInfos(KaxTrackFlagForced::Create, KaxTrackFlagForced_TheId, "TrackFlagForced", KaxTrackFlagForced_Context);\r
-const EbmlCallbacks KaxTrackFlagLacing::ClassInfos(KaxTrackFlagLacing::Create, KaxTrackFlagLacing_TheId, "TrackFlagLacing", KaxTrackFlagLacing_Context);\r
-const EbmlCallbacks KaxTrackMinCache::ClassInfos(KaxTrackMinCache::Create, KaxTrackMinCache_TheId, "TrackMinCache", KaxTrackMinCache_Context);\r
-const EbmlCallbacks KaxTrackMaxCache::ClassInfos(KaxTrackMaxCache::Create, KaxTrackMaxCache_TheId, "TrackMaxCache\0rotomodobopo", KaxTrackMaxCache_Context);\r
-const EbmlCallbacks KaxTrackDefaultDuration::ClassInfos(KaxTrackDefaultDuration::Create, KaxTrackDefaultDuration_TheId, "TrackDefaultDuration", KaxTrackDefaultDuration_Context);\r
-const EbmlCallbacks KaxTrackTimecodeScale::ClassInfos(KaxTrackTimecodeScale::Create, KaxTrackTimecodeScale_TheId, "TrackTimecodeScale", KaxTrackTimecodeScale_Context);\r
-const EbmlCallbacks KaxMaxBlockAdditionID::ClassInfos(KaxMaxBlockAdditionID::Create, KaxMaxBlockAdditionID_TheId, "MaxBlockAdditionID", KaxMaxBlockAdditionID_Context);\r
-const EbmlCallbacks KaxTrackName::ClassInfos(KaxTrackName::Create, KaxTrackName_TheId, "TrackName", KaxTrackName_Context);\r
-const EbmlCallbacks KaxTrackLanguage::ClassInfos(KaxTrackLanguage::Create, KaxTrackLanguage_TheId, "TrackLanguage", KaxTrackLanguage_Context);\r
-const EbmlCallbacks KaxCodecID::ClassInfos(KaxCodecID::Create, KaxCodecID_TheId, "CodecID", KaxCodecID_Context);\r
-const EbmlCallbacks KaxCodecPrivate::ClassInfos(KaxCodecPrivate::Create, KaxCodecPrivate_TheId, "CodecPrivate", KaxCodecPrivate_Context);\r
-const EbmlCallbacks KaxCodecName::ClassInfos(KaxCodecName::Create, KaxCodecName_TheId, "CodecName", KaxCodecName_Context);\r
-const EbmlCallbacks KaxTrackAttachmentLink::ClassInfos(KaxTrackAttachmentLink::Create, KaxTrackAttachmentLink_TheId, "TrackAttachmentLink", KaxTrackAttachmentLink_Context);\r
-const EbmlCallbacks KaxTrackOverlay::ClassInfos(KaxTrackOverlay::Create, KaxTrackOverlay_TheId, "TrackOverlay", KaxTrackOverlay_Context);\r
-const EbmlCallbacks KaxTrackTranslate::ClassInfos(KaxTrackTranslate::Create, KaxTrackTranslate_TheId, "TrackTranslate", KaxTrackTranslate_Context);\r
-const EbmlCallbacks KaxTrackTranslateEditionUID::ClassInfos(KaxTrackTranslateEditionUID::Create, KaxTrackTranslateEditionUID_TheId, "TrackTranslateEditionUID", KaxTrackTranslateEditionUID_Context);\r
-const EbmlCallbacks KaxTrackTranslateCodec::ClassInfos(KaxTrackTranslateCodec::Create, KaxTrackTranslateCodec_TheId, "TrackTranslateCodec", KaxTrackTranslateCodec_Context);\r
-const EbmlCallbacks KaxTrackTranslateTrackID::ClassInfos(KaxTrackTranslateTrackID::Create, KaxTrackTranslateTrackID_TheId, "TrackTranslateTrackID", KaxTrackTranslateTrackID_Context);\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlCallbacks KaxTrackFlagEnabled::ClassInfos(KaxTrackFlagEnabled::Create, KaxTrackFlagEnabled_TheId, "TrackFlagEnabled", KaxTrackFlagEnabled_Context);\r
-const EbmlCallbacks KaxCodecSettings::ClassInfos(KaxCodecSettings::Create, KaxCodecSettings_TheId, "CodecSettings", KaxCodecSettings_Context);\r
-const EbmlCallbacks KaxCodecInfoURL::ClassInfos(KaxCodecInfoURL::Create, KaxCodecInfoURL_TheId, "CodecInfoURL", KaxCodecInfoURL_Context);\r
-const EbmlCallbacks KaxCodecDownloadURL::ClassInfos(KaxCodecDownloadURL::Create, KaxCodecDownloadURL_TheId, "CodecDownloadURL", KaxCodecDownloadURL_Context);\r
-const EbmlCallbacks KaxCodecDecodeAll::ClassInfos(KaxCodecDecodeAll::Create, KaxCodecDecodeAll_TheId, "CodecDecodeAll", KaxCodecDecodeAll_Context);\r
-#endif // MATROSKA_VERSION\r
+DEFINE_MKX_UINTEGER (KaxTrackFlagEnabled,           0xB9, 1, KaxTracks, "TrackFlagDefault");\r
+DEFINE_MKX_UNISTRING(KaxCodecSettings,          0x3A9697, 3, KaxTracks, "CodecSettings");\r
+DEFINE_MKX_STRING   (KaxCodecInfoURL,           0x3B4040, 3, KaxTracks, "CodecInfoURL");\r
+DEFINE_MKX_STRING   (KaxCodecDownloadURL,       0x26B240, 3, KaxTracks, "CodecDownloadURL");\r
+DEFINE_MKX_UINTEGER (KaxCodecDecodeAll,             0xAA, 1, KaxTracks, "CodecDecodeAll");\r
+#endif\r
 \r
 KaxTrackTranslate::KaxTrackTranslate()\r
        :EbmlMaster(KaxTrackTranslate_Context)\r
index 077e6279468038b69e9730ed7ce5707f33036a58..3a23a8eed1e33fc0fc1f7602d1b82114b8936a50 100644 (file)
 \r
 // sub elements\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
 #if MATROSKA_VERSION == 1\r
-const EbmlSemantic KaxTrackVideo_ContextList[10] =\r
+static const EbmlSemantic ContextList_KaxTrackVideo[10] =\r
 #else // MATROSKA_VERSION\r
-const EbmlSemantic KaxTrackVideo_ContextList[15] =\r
+static const EbmlSemantic ContextList_KaxTrackVideo[15] =\r
 #endif // MATROSKA_VERSION\r
 {\r
        EbmlSemantic(true , true, EBML_INFO(KaxVideoPixelWidth)),\r
@@ -64,62 +65,24 @@ const EbmlSemantic KaxTrackVideo_ContextList[15] =
 #endif // MATROSKA_VERSION\r
 };\r
 \r
-const EbmlSemanticContext KaxTrackVideo_Context = EbmlSemanticContext(countof(KaxTrackVideo_ContextList), KaxTrackVideo_ContextList, &KaxTrackEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackVideo));\r
-const EbmlSemanticContext KaxVideoPixelWidth_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelWidth));\r
-const EbmlSemanticContext KaxVideoPixelHeight_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelHeight));\r
-const EbmlSemanticContext KaxVideoPixelCropBottom_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropBottom));\r
-const EbmlSemanticContext KaxVideoPixelCropTop_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropTop));\r
-const EbmlSemanticContext KaxVideoPixelCropRight_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropLeft));\r
-const EbmlSemanticContext KaxVideoPixelCropLeft_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropRight));\r
-const EbmlSemanticContext KaxVideoDisplayWidth_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoDisplayWidth));\r
-const EbmlSemanticContext KaxVideoDisplayHeight_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoDisplayHeight));\r
-const EbmlSemanticContext KaxVideoColourSpace_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoColourSpace));\r
-const EbmlSemanticContext KaxVideoFrameRate_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoFrameRate));\r
+DEFINE_MKX_MASTER  (KaxTrackVideo,             0xE0, 1, KaxTrackEntry, "TrackVideo");\r
+DEFINE_MKX_UINTEGER(KaxVideoPixelWidth,        0xB0, 1, KaxTrackVideo, "VideoPixelWidth");\r
+DEFINE_MKX_UINTEGER(KaxVideoPixelHeight,       0xBA, 1, KaxTrackVideo, "VideoPixelHeight");\r
+DEFINE_MKX_UINTEGER(KaxVideoPixelCropBottom, 0x54AA, 2, KaxTrackVideo, "VideoPixelCropBottom");\r
+DEFINE_MKX_UINTEGER(KaxVideoPixelCropTop,    0x54BB, 2, KaxTrackVideo, "VideoPixelCropTop");\r
+DEFINE_MKX_UINTEGER(KaxVideoPixelCropLeft,   0x54CC, 2, KaxTrackVideo, "VideoPixelCropLeft");\r
+DEFINE_MKX_UINTEGER(KaxVideoPixelCropRight,  0x54DD, 2, KaxTrackVideo, "VideoPixelCropRight");\r
+DEFINE_MKX_UINTEGER(KaxVideoDisplayWidth,    0x54B0, 2, KaxTrackVideo, "VideoDisplayWidth");\r
+DEFINE_MKX_UINTEGER(KaxVideoDisplayHeight,   0x54BA, 2, KaxTrackVideo, "VideoDisplayHeight");\r
+DEFINE_MKX_BINARY  (KaxVideoColourSpace,   0x2EB524, 3, KaxTrackVideo, "VideoColourSpace");\r
+DEFINE_MKX_FLOAT   (KaxVideoFrameRate,     0x2383E3, 3, KaxTrackVideo, "VideoFrameRate");\r
 #if MATROSKA_VERSION >= 2\r
-const EbmlSemanticContext KaxVideoFlagInterlaced_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoFlagInterlaced));\r
-const EbmlSemanticContext KaxVideoStereoMode_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoStereoMode));\r
-const EbmlSemanticContext KaxVideoDisplayUnit_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoDisplayUnit));\r
-const EbmlSemanticContext KaxVideoAspectRatio_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoAspectRatio));\r
-const EbmlSemanticContext KaxVideoGamma_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoGamma));\r
-#endif // MATROSKA_VERSION\r
-\r
-EbmlId KaxTrackVideo_TheId          (0xE0, 1);\r
-EbmlId KaxVideoPixelWidth_TheId     (0xB0, 1);\r
-EbmlId KaxVideoPixelHeight_TheId    (0xBA, 1);\r
-EbmlId KaxVideoPixelCropBottom_TheId(0x54AA, 2);\r
-EbmlId KaxVideoPixelCropTop_TheId   (0x54BB, 2);\r
-EbmlId KaxVideoPixelCropLeft_TheId  (0x54CC, 2);\r
-EbmlId KaxVideoPixelCropRight_TheId (0x54DD, 2);\r
-EbmlId KaxVideoDisplayWidth_TheId   (0x54B0, 2);\r
-EbmlId KaxVideoDisplayHeight_TheId  (0x54BA, 2);\r
-EbmlId KaxVideoColourSpace_TheId    (0x2EB524, 3);\r
-EbmlId KaxVideoFrameRate_TheId      (0x2383E3, 3);\r
-#if MATROSKA_VERSION >= 2\r
-EbmlId KaxVideoFlagInterlaced_TheId (0x9A, 1);\r
-EbmlId KaxVideoStereoMode_TheId     (0x53B9, 2);\r
-EbmlId KaxVideoDisplayUnit_TheId    (0x54B2, 2);\r
-EbmlId KaxVideoAspectRatio_TheId    (0x54B3, 1);\r
-EbmlId KaxVideoGamma_TheId          (0x2FB523, 3);\r
-#endif // MATROSKA_VERSION\r
-\r
-const EbmlCallbacks KaxTrackVideo::ClassInfos(KaxTrackVideo::Create, KaxTrackVideo_TheId, "TrackAudio", KaxTrackVideo_Context);\r
-const EbmlCallbacks KaxVideoPixelWidth::ClassInfos(KaxVideoPixelWidth::Create, KaxVideoPixelWidth_TheId, "VideoPixelWidth", KaxVideoPixelWidth_Context);\r
-const EbmlCallbacks KaxVideoPixelHeight::ClassInfos(KaxVideoPixelHeight::Create, KaxVideoPixelHeight_TheId, "VideoPixelHeight", KaxVideoPixelHeight_Context);\r
-const EbmlCallbacks KaxVideoPixelCropBottom::ClassInfos(KaxVideoPixelCropBottom::Create, KaxVideoPixelCropBottom_TheId, "VideoPixelCropBottom", KaxVideoPixelCropBottom_Context);\r
-const EbmlCallbacks KaxVideoPixelCropTop::ClassInfos(KaxVideoPixelCropTop::Create, KaxVideoPixelCropTop_TheId, "VideoPixelCropTop", KaxVideoPixelCropTop_Context);\r
-const EbmlCallbacks KaxVideoPixelCropLeft::ClassInfos(KaxVideoPixelCropLeft::Create, KaxVideoPixelCropLeft_TheId, "VideoPixelCropLeft", KaxVideoPixelCropLeft_Context);\r
-const EbmlCallbacks KaxVideoPixelCropRight::ClassInfos(KaxVideoPixelCropRight::Create, KaxVideoPixelCropRight_TheId, "VideoPixelCropRight", KaxVideoPixelCropRight_Context);\r
-const EbmlCallbacks KaxVideoDisplayWidth::ClassInfos(KaxVideoDisplayWidth::Create, KaxVideoDisplayWidth_TheId, "VideoDisplayWidth", KaxVideoDisplayWidth_Context);\r
-const EbmlCallbacks KaxVideoDisplayHeight::ClassInfos(KaxVideoDisplayHeight::Create, KaxVideoDisplayHeight_TheId, "VideoDisplayHeight", KaxVideoDisplayHeight_Context);\r
-const EbmlCallbacks KaxVideoColourSpace::ClassInfos(KaxVideoColourSpace::Create, KaxVideoColourSpace_TheId, "VideoColourSpace", KaxVideoColourSpace_Context);\r
-const EbmlCallbacks KaxVideoFrameRate::ClassInfos(KaxVideoFrameRate::Create, KaxVideoFrameRate_TheId, "VideoFrameRate", KaxVideoFrameRate_Context);\r
-#if MATROSKA_VERSION >= 2\r
-const EbmlCallbacks KaxVideoFlagInterlaced::ClassInfos(KaxVideoFlagInterlaced::Create, KaxVideoFlagInterlaced_TheId, "VideoFlagInterlaced", KaxVideoFlagInterlaced_Context);\r
-const EbmlCallbacks KaxVideoStereoMode::ClassInfos(KaxVideoStereoMode::Create, KaxVideoStereoMode_TheId, "VideoStereoMode", KaxVideoStereoMode_Context);\r
-const EbmlCallbacks KaxVideoDisplayUnit::ClassInfos(KaxVideoDisplayUnit::Create, KaxVideoDisplayUnit_TheId, "VideoDisplayUnit", KaxVideoDisplayUnit_Context);\r
-const EbmlCallbacks KaxVideoAspectRatio::ClassInfos(KaxVideoAspectRatio::Create, KaxVideoAspectRatio_TheId, "VideoAspectRatio", KaxVideoAspectRatio_Context);\r
-const EbmlCallbacks KaxVideoGamma::ClassInfos(KaxVideoGamma::Create, KaxVideoGamma_TheId, "VideoGamma", KaxVideoGamma_Context);\r
-#endif // MATROSKA_VERSION\r
+DEFINE_MKX_UINTEGER(KaxVideoFlagInterlaced,    0x9A, 1, KaxTrackVideo, "VideoFlagInterlaced");\r
+DEFINE_MKX_UINTEGER(KaxVideoStereoMode,      0x53B9, 2, KaxTrackVideo, "VideoStereoMode");\r
+DEFINE_MKX_UINTEGER(KaxVideoDisplayUnit,     0x54B2, 2, KaxTrackVideo, "VideoDisplayUnit");\r
+DEFINE_MKX_UINTEGER(KaxVideoAspectRatio,     0x54B3, 2, KaxTrackVideo, "VideoAspectRatio");\r
+DEFINE_MKX_FLOAT   (KaxVideoGamma,         0x2FB523, 3, KaxTrackVideo, "VideoGamma");\r
+#endif\r
 \r
 KaxTrackVideo::KaxTrackVideo()\r
        :EbmlMaster(KaxTrackVideo_Context)\r
index 608ee6bdedc50cf32574eece04d146e1f920595c..30aa14bf14c7a811e8f3d16bf35a9a5e66134a3d 100644 (file)
 #include "matroska/KaxTrackVideo.h"\r
 #include "matroska/KaxContentEncoding.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-const EbmlSemantic KaxTracks_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTracks[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxTrackEntry)),\r
 };\r
 \r
 #if MATROSKA_VERSION == 1\r
-const EbmlSemantic KaxTrackEntry_ContextList[22] =\r
+static const EbmlSemantic ContextList_KaxTrackEntry[22] =\r
 #else // MATROSKA_VERSION\r
-const EbmlSemantic KaxTrackEntry_ContextList[27] =\r
+static const EbmlSemantic ContextList_KaxTrackEntry[27] =\r
 #endif // MATROSKA_VERSION\r
 {\r
        EbmlSemantic(true , true, EBML_INFO(KaxTrackNumber)),\r
@@ -87,14 +88,8 @@ const EbmlSemantic KaxTrackEntry_ContextList[27] =
        EbmlSemantic(false, true, EBML_INFO(KaxContentEncodings)),\r
 };\r
 \r
-const EbmlSemanticContext KaxTracks_Context = EbmlSemanticContext(countof(KaxTracks_ContextList), KaxTracks_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTracks));\r
-const EbmlSemanticContext KaxTrackEntry_Context = EbmlSemanticContext(countof(KaxTrackEntry_ContextList), KaxTrackEntry_ContextList, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackEntry));\r
-\r
-EbmlId KaxTracks_TheId    (0x1654AE6B, 4);\r
-EbmlId KaxTrackEntry_TheId(0xAE, 1);\r
-\r
-const EbmlCallbacks KaxTracks::ClassInfos(KaxTracks::Create, KaxTracks_TheId, "Tracks", KaxTracks_Context);\r
-const EbmlCallbacks KaxTrackEntry::ClassInfos(KaxTrackEntry::Create, KaxTrackEntry_TheId, "TrackEntry", KaxTrackEntry_Context);\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