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
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
#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
*/\r
#include "matroska/KaxAttached.h"\r
#include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
\r
// sub elements\r
\r
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
#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
#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
#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
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
#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
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
*/\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
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
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
#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
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
*/\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
*/\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
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
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
#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
-/****************************************************************************
-** 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
#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
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
*/\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
#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
#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
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
#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
\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
#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
*/\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
\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
#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
#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
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