From: Steve Lhomme Date: Wed, 7 Apr 2010 16:09:02 +0000 (+0000) Subject: use a macro to define the semantic tables as the v2 library uses a slightly different... X-Git-Tag: release-0.9.0~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=132afa9fc1c3ed623561f71a2ab0a56aee3ca0c1;p=libmatroska use a macro to define the semantic tables as the v2 library uses a slightly different table format git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@85 a6f86f6d-0131-4f8e-9e7b-e335508773d5 --- diff --git a/src/KaxAttached.cpp b/src/KaxAttached.cpp index f2450a2..48c3ac1 100644 --- a/src/KaxAttached.cpp +++ b/src/KaxAttached.cpp @@ -42,21 +42,16 @@ using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -#if MATROSKA_VERSION == 1 -static const EbmlSemantic ContextList_KaxAttached[5] = -#else // MATROSKA_VERSION -static const EbmlSemantic ContextList_KaxAttached[6] = -#endif // MATROSKA_VERSION -{ - EbmlSemantic(true, true, EBML_INFO(KaxFileName)), - EbmlSemantic(true, true, EBML_INFO(KaxMimeType)), - EbmlSemantic(true, true, EBML_INFO(KaxFileData)), - EbmlSemantic(false, true, EBML_INFO(KaxFileDescription)), - EbmlSemantic(true, true, EBML_INFO(KaxFileUID)), +DEFINE_START_SEMANTIC(KaxAttached) +DEFINE_SEMANTIC_ITEM(true, true, KaxFileName) +DEFINE_SEMANTIC_ITEM(true, true, KaxMimeType) +DEFINE_SEMANTIC_ITEM(true, true, KaxFileData) +DEFINE_SEMANTIC_ITEM(false, true, KaxFileDescription) +DEFINE_SEMANTIC_ITEM(true, true, KaxFileUID) #if MATROSKA_VERSION >= 2 - EbmlSemantic(false, true, EBML_INFO(KaxFileReferral)), +DEFINE_SEMANTIC_ITEM(false, true, KaxFileReferral) #endif // MATROSKA_VERSION -}; +DEFINE_END_SEMANTIC(KaxAttached) DEFINE_MKX_MASTER_CONS(KaxAttached, 0x61A7, 2, KaxAttachments, "AttachedFile"); DEFINE_MKX_UNISTRING (KaxFileDescription, 0x467E, 2, KaxAttachments, "FileDescription"); diff --git a/src/KaxAttachments.cpp b/src/KaxAttachments.cpp index bf39881..6e1de34 100644 --- a/src/KaxAttachments.cpp +++ b/src/KaxAttachments.cpp @@ -42,10 +42,9 @@ using namespace LIBEBML_NAMESPACE; // sub elements START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxAttachments[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxAttached)), ///< EBMLVersion -}; +DEFINE_START_SEMANTIC(KaxAttachments) +DEFINE_SEMANTIC_ITEM(true, false, KaxAttached) ///< EBMLVersion +DEFINE_END_SEMANTIC(KaxAttachments) DEFINE_MKX_MASTER_CONS(KaxAttachments, 0x1941A469, 4, KaxSegment, "Attachments"); diff --git a/src/KaxBlock.cpp b/src/KaxBlock.cpp index c8b29ec..d982174 100644 --- a/src/KaxBlock.cpp +++ b/src/KaxBlock.cpp @@ -43,37 +43,30 @@ START_LIBMATROSKA_NAMESPACE -#if MATROSKA_VERSION == 1 -static const EbmlSemantic ContextList_KaxBlockGroup[6] = -#else // MATROSKA_VERSION -static const EbmlSemantic ContextList_KaxBlockGroup[9] = -#endif // MATROSKA_VERSION -{ - EbmlSemantic(true, true, EBML_INFO(KaxBlock)), +DEFINE_START_SEMANTIC(KaxBlockGroup) +DEFINE_SEMANTIC_ITEM(true, true, KaxBlock) #if MATROSKA_VERSION >= 2 - EbmlSemantic(false, true, EBML_INFO(KaxBlockVirtual)), +DEFINE_SEMANTIC_ITEM(false, true, KaxBlockVirtual) #endif // MATROSKA_VERSION - EbmlSemantic(false, true, EBML_INFO(KaxBlockDuration)), - EbmlSemantic(false, true, EBML_INFO(KaxSlices)), - EbmlSemantic(true, true, EBML_INFO(KaxReferencePriority)), - EbmlSemantic(false, false, EBML_INFO(KaxReferenceBlock)), +DEFINE_SEMANTIC_ITEM(false, true, KaxBlockDuration) +DEFINE_SEMANTIC_ITEM(false, true, KaxSlices) +DEFINE_SEMANTIC_ITEM(true, true, KaxReferencePriority) +DEFINE_SEMANTIC_ITEM(false, false, KaxReferenceBlock) #if MATROSKA_VERSION >= 2 - EbmlSemantic(false, true, EBML_INFO(KaxReferenceVirtual)), - EbmlSemantic(false, true, EBML_INFO(KaxCodecState)), +DEFINE_SEMANTIC_ITEM(false, true, KaxReferenceVirtual) +DEFINE_SEMANTIC_ITEM(false, true, KaxCodecState) #endif // MATROSKA_VERSION - EbmlSemantic(false, true, EBML_INFO(KaxBlockAdditions)), -}; +DEFINE_SEMANTIC_ITEM(false, true, KaxBlockAdditions) +DEFINE_END_SEMANTIC(KaxBlockGroup) -static const EbmlSemantic ContextList_KaxBlockAdditions[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxBlockMore)) -}; +DEFINE_START_SEMANTIC(KaxBlockAdditions) +DEFINE_SEMANTIC_ITEM(true, false, KaxBlockMore) +DEFINE_END_SEMANTIC(KaxBlockAdditions) -static const EbmlSemantic ContextList_KaxBlockMore[2] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxBlockAddID)), - EbmlSemantic(true, true, EBML_INFO(KaxBlockAdditional)) -}; +DEFINE_START_SEMANTIC(KaxBlockMore) +DEFINE_SEMANTIC_ITEM(true, true, KaxBlockAddID) +DEFINE_SEMANTIC_ITEM(true, true, KaxBlockAdditional) +DEFINE_END_SEMANTIC(KaxBlockMore) DEFINE_MKX_MASTER_CONS (KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup"); DEFINE_MKX_BINARY_CONS (KaxBlock, 0xA1, 1, KaxBlockGroup, "Block"); diff --git a/src/KaxBlockData.cpp b/src/KaxBlockData.cpp index 7fe307d..15b4c09 100644 --- a/src/KaxBlockData.cpp +++ b/src/KaxBlockData.cpp @@ -43,16 +43,16 @@ START_LIBMATROSKA_NAMESPACE const EbmlSemantic ContextList_KaxSlices[1] = { - EbmlSemantic(false, false, EBML_INFO(KaxTimeSlice)), +DEFINE_SEMANTIC_ITEM(false, false, KaxTimeSlice) }; const EbmlSemantic ContextList_KaxTimeSlice[5] = { - EbmlSemantic(false, true, EBML_INFO(KaxSliceLaceNumber)), - EbmlSemantic(false, true, EBML_INFO(KaxSliceFrameNumber)), - EbmlSemantic(false, true, EBML_INFO(KaxSliceBlockAddID)), - EbmlSemantic(false, true, EBML_INFO(KaxSliceDelay)), - EbmlSemantic(false, true, EBML_INFO(KaxSliceDuration)), +DEFINE_SEMANTIC_ITEM(false, true, KaxSliceLaceNumber) +DEFINE_SEMANTIC_ITEM(false, true, KaxSliceFrameNumber) +DEFINE_SEMANTIC_ITEM(false, true, KaxSliceBlockAddID) +DEFINE_SEMANTIC_ITEM(false, true, KaxSliceDelay) +DEFINE_SEMANTIC_ITEM(false, true, KaxSliceDuration) }; DEFINE_MKX_UINTEGER_DEF (KaxReferencePriority, 0xFA, 1, KaxBlockGroup, "FlagReferenced", 0); diff --git a/src/KaxChapters.cpp b/src/KaxChapters.cpp index 6241da5..e559f78 100644 --- a/src/KaxChapters.cpp +++ b/src/KaxChapters.cpp @@ -39,60 +39,53 @@ // sub elements START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxChapters[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxEditionEntry)), -}; +DEFINE_START_SEMANTIC(KaxChapters) +DEFINE_SEMANTIC_ITEM(true, false, KaxEditionEntry) +DEFINE_END_SEMANTIC(KaxChapters) -static const EbmlSemantic ContextList_KaxEditionEntry[5] = -{ - EbmlSemantic(false, true , EBML_INFO(KaxEditionUID)), - EbmlSemantic(true , true , EBML_INFO(KaxEditionFlagHidden)), - EbmlSemantic(true , true , EBML_INFO(KaxEditionFlagDefault)), - EbmlSemantic(false, true , EBML_INFO(KaxEditionFlagOrdered)), - EbmlSemantic(true , false, EBML_INFO(KaxChapterAtom)), -}; +DEFINE_START_SEMANTIC(KaxEditionEntry) +DEFINE_SEMANTIC_ITEM(false, true, KaxEditionUID) +DEFINE_SEMANTIC_ITEM(true, true, KaxEditionFlagHidden) +DEFINE_SEMANTIC_ITEM(true, true, KaxEditionFlagDefault) +DEFINE_SEMANTIC_ITEM(false, true, KaxEditionFlagOrdered) +DEFINE_SEMANTIC_ITEM(true, false, KaxChapterAtom) +DEFINE_END_SEMANTIC(KaxEditionEntry) -static const EbmlSemantic ContextList_KaxChapterAtom[12] = -{ - EbmlSemantic(false, false, EBML_INFO(KaxChapterAtom)), - EbmlSemantic(true, true, EBML_INFO(KaxChapterUID)), - EbmlSemantic(true, true, EBML_INFO(KaxChapterTimeStart)), - EbmlSemantic(false, true, EBML_INFO(KaxChapterTimeEnd)), - EbmlSemantic(true , true, EBML_INFO(KaxChapterFlagHidden)), - EbmlSemantic(true , true, EBML_INFO(KaxChapterFlagEnabled)), - EbmlSemantic(false, true, EBML_INFO(KaxChapterSegmentUID)), - EbmlSemantic(false, true, EBML_INFO(KaxChapterSegmentEditionUID)), - EbmlSemantic(false, true, EBML_INFO(KaxChapterPhysicalEquiv)), - EbmlSemantic(false, true, EBML_INFO(KaxChapterTrack)), - EbmlSemantic(false, false, EBML_INFO(KaxChapterDisplay)), - EbmlSemantic(false, false, EBML_INFO(KaxChapterProcess)), -}; +DEFINE_START_SEMANTIC(KaxChapterAtom) +DEFINE_SEMANTIC_ITEM(false, false, KaxChapterAtom) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterUID) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTimeStart) +DEFINE_SEMANTIC_ITEM(false, true, KaxChapterTimeEnd) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterFlagHidden) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterFlagEnabled) +DEFINE_SEMANTIC_ITEM(false, true, KaxChapterSegmentUID) +DEFINE_SEMANTIC_ITEM(false, true, KaxChapterSegmentEditionUID) +DEFINE_SEMANTIC_ITEM(false, true, KaxChapterPhysicalEquiv) +DEFINE_SEMANTIC_ITEM(false, true, KaxChapterTrack) +DEFINE_SEMANTIC_ITEM(false, false, KaxChapterDisplay) +DEFINE_SEMANTIC_ITEM(false, false, KaxChapterProcess) +DEFINE_END_SEMANTIC(KaxChapterAtom) -static const EbmlSemantic ContextList_KaxChapterTrack[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxChapterTrackNumber)), -}; +DEFINE_START_SEMANTIC(KaxChapterTrack) +DEFINE_SEMANTIC_ITEM(true, false, KaxChapterTrackNumber) +DEFINE_END_SEMANTIC(KaxChapterTrack) -static const EbmlSemantic ContextList_KaxChapterDisplay[3] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxChapterString)), - EbmlSemantic(true, false, EBML_INFO(KaxChapterLanguage)), - EbmlSemantic(false, false, EBML_INFO(KaxChapterCountry)), -}; +DEFINE_START_SEMANTIC(KaxChapterDisplay) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterString) +DEFINE_SEMANTIC_ITEM(true, false, KaxChapterLanguage) +DEFINE_SEMANTIC_ITEM(false, false, KaxChapterCountry) +DEFINE_END_SEMANTIC(KaxChapterDisplay) -static const EbmlSemantic ContextList_KaxChapterProcess[3] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessCodecID)), - EbmlSemantic(false, true, EBML_INFO(KaxChapterProcessPrivate)), - EbmlSemantic(false, false, EBML_INFO(KaxChapterProcessCommand)), -}; +DEFINE_START_SEMANTIC(KaxChapterProcess) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessCodecID) +DEFINE_SEMANTIC_ITEM(false, true, KaxChapterProcessPrivate) +DEFINE_SEMANTIC_ITEM(false, false, KaxChapterProcessCommand) +DEFINE_END_SEMANTIC(KaxChapterProcess) -static const EbmlSemantic ContextList_KaxChapterProcessCommand[2] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessTime)), - EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessData)), -}; +DEFINE_START_SEMANTIC(KaxChapterProcessCommand) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessTime) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessData) +DEFINE_END_SEMANTIC(KaxChapterProcessCommand) DEFINE_MKX_MASTER (KaxChapters, 0x1043A770, 4, KaxSegment, "Chapters"); DEFINE_MKX_MASTER (KaxEditionEntry, 0x45B9, 2, KaxChapters, "EditionEntry"); diff --git a/src/KaxCluster.cpp b/src/KaxCluster.cpp index 1147a1f..f292b28 100644 --- a/src/KaxCluster.cpp +++ b/src/KaxCluster.cpp @@ -40,21 +40,16 @@ // sub elements START_LIBMATROSKA_NAMESPACE -#if MATROSKA_VERSION == 1 -static const EbmlSemantic ContextList_KaxCluster[5] = -#else // MATROSKA_VERSION -static const EbmlSemantic ContextList_KaxCluster[6] = -#endif // MATROSKA_VERSION -{ - EbmlSemantic(true, true, EBML_INFO(KaxClusterTimecode)), - EbmlSemantic(false, true, EBML_INFO(KaxClusterSilentTracks)), - EbmlSemantic(false, true, EBML_INFO(KaxClusterPrevSize)), - EbmlSemantic(false, false, EBML_INFO(KaxBlockGroup)), +DEFINE_START_SEMANTIC(KaxCluster) +DEFINE_SEMANTIC_ITEM(true, true, KaxClusterTimecode) +DEFINE_SEMANTIC_ITEM(false, true, KaxClusterSilentTracks) +DEFINE_SEMANTIC_ITEM(false, true, KaxClusterPrevSize) +DEFINE_SEMANTIC_ITEM(false, false, KaxBlockGroup) #if MATROSKA_VERSION == 2 - EbmlSemantic(false, false, EBML_INFO(KaxSimpleBlock)), +DEFINE_SEMANTIC_ITEM(false, false, KaxSimpleBlock) #endif - EbmlSemantic(false, true, EBML_INFO(KaxClusterPosition)), -}; +DEFINE_SEMANTIC_ITEM(false, true, KaxClusterPosition) +DEFINE_END_SEMANTIC(KaxCluster) DEFINE_MKX_MASTER_CONS(KaxCluster, 0x1F43B675, 4, KaxSegment, "Cluster"); diff --git a/src/KaxClusterData.cpp b/src/KaxClusterData.cpp index c90dcd7..2d6e281 100644 --- a/src/KaxClusterData.cpp +++ b/src/KaxClusterData.cpp @@ -38,10 +38,9 @@ START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxClusterSilentTracks[1] = -{ - EbmlSemantic(false, false, EBML_INFO(KaxClusterSilentTrackNumber)), -}; +DEFINE_START_SEMANTIC(KaxClusterSilentTracks) +DEFINE_SEMANTIC_ITEM(false, false, KaxClusterSilentTrackNumber) +DEFINE_END_SEMANTIC(KaxClusterSilentTracks) DEFINE_MKX_UINTEGER(KaxClusterTimecode, 0xE7, 1, KaxCluster, "ClusterTimecode"); DEFINE_MKX_MASTER (KaxClusterSilentTracks, 0x5854, 2, KaxCluster, "ClusterSilentTracks") diff --git a/src/KaxContentEncoding.cpp b/src/KaxContentEncoding.cpp index f193eaf..e76e4fc 100644 --- a/src/KaxContentEncoding.cpp +++ b/src/KaxContentEncoding.cpp @@ -38,31 +38,31 @@ START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxContentEncodings[1] = { - EbmlSemantic(true, true, EBML_INFO(KaxContentEncoding)), -}; +DEFINE_START_SEMANTIC(KaxContentEncodings) +DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncoding) +DEFINE_END_SEMANTIC(KaxContentEncodings) -static const EbmlSemantic ContextList_KaxContentEncoding[5] = { - EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingOrder)), - EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingScope)), - EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingType)), - EbmlSemantic(false, true, EBML_INFO(KaxContentCompression)), - EbmlSemantic(false, true, EBML_INFO(KaxContentEncryption)), -}; +DEFINE_START_SEMANTIC(KaxContentEncoding) +DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncodingOrder) +DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncodingScope) +DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncodingType) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentCompression) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncryption) +DEFINE_END_SEMANTIC(KaxContentEncoding) -static const EbmlSemantic ContextList_KaxContentCompression[2] = { - EbmlSemantic(true, true, EBML_INFO(KaxContentCompAlgo)), - EbmlSemantic(false, true, EBML_INFO(KaxContentCompSettings)), -}; +DEFINE_START_SEMANTIC(KaxContentCompression) +DEFINE_SEMANTIC_ITEM(true, true, KaxContentCompAlgo) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentCompSettings) +DEFINE_END_SEMANTIC(KaxContentCompression) -static const EbmlSemantic ContextList_KaxContentEncryption[6] = { - EbmlSemantic(false, true, EBML_INFO(KaxContentEncAlgo)), - EbmlSemantic(false, true, EBML_INFO(KaxContentEncKeyID)), - EbmlSemantic(false, true, EBML_INFO(KaxContentSignature)), - EbmlSemantic(false, true, EBML_INFO(KaxContentSigKeyID)), - EbmlSemantic(false, true, EBML_INFO(KaxContentSigAlgo)), - EbmlSemantic(false, true, EBML_INFO(KaxContentSigHashAlgo)), -}; +DEFINE_START_SEMANTIC(KaxContentEncryption) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncAlgo) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncKeyID) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentSignature) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentSigKeyID) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentSigAlgo) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentSigHashAlgo) +DEFINE_END_SEMANTIC(KaxContentEncryption) DEFINE_MKX_MASTER (KaxContentEncodings, 0x6d80, 2, KaxTrackEntry, "ContentEncodings"); DEFINE_MKX_MASTER (KaxContentEncoding, 0x6240, 2, KaxContentEncodings, "ContentEncoding"); diff --git a/src/KaxCues.cpp b/src/KaxCues.cpp index 5d88b6b..7fdf9bd 100644 --- a/src/KaxCues.cpp +++ b/src/KaxCues.cpp @@ -41,10 +41,9 @@ // sub elements START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxCues[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxCuePoint)), -}; +DEFINE_START_SEMANTIC(KaxCues) +DEFINE_SEMANTIC_ITEM(true, false, KaxCuePoint) +DEFINE_END_SEMANTIC(KaxCues) DEFINE_MKX_MASTER(KaxCues, 0x1C53BB6B, 4, KaxSegment, "Cues"); diff --git a/src/KaxCuesData.cpp b/src/KaxCuesData.cpp index 5828db3..a2f1e3d 100644 --- a/src/KaxCuesData.cpp +++ b/src/KaxCuesData.cpp @@ -42,35 +42,28 @@ START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxCuePoint[2] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxCueTime)), - EbmlSemantic(true, false, EBML_INFO(KaxCueTrackPositions)), -}; - -#if MATROSKA_VERSION == 1 -static const EbmlSemantic ContextList_KaxCueTrackPositions[3] = -#else // MATROSKA_VERSION -static const EbmlSemantic ContextList_KaxCueTrackPositions[5] = -#endif // MATROSKA_VERSION -{ - EbmlSemantic(true, true, EBML_INFO(KaxCueTrack)), - EbmlSemantic(true, true, EBML_INFO(KaxCueClusterPosition)), - EbmlSemantic(false, true, EBML_INFO(KaxCueBlockNumber)), +DEFINE_START_SEMANTIC(KaxCuePoint) +DEFINE_SEMANTIC_ITEM(true, true, KaxCueTime) +DEFINE_SEMANTIC_ITEM(true, false, KaxCueTrackPositions) +DEFINE_END_SEMANTIC(KaxCuePoint) + +DEFINE_START_SEMANTIC(KaxCueTrackPositions) +DEFINE_SEMANTIC_ITEM(true, true, KaxCueTrack) +DEFINE_SEMANTIC_ITEM(true, true, KaxCueClusterPosition) +DEFINE_SEMANTIC_ITEM(false, true, KaxCueBlockNumber) #if MATROSKA_VERSION >= 2 - EbmlSemantic(false, true, EBML_INFO(KaxCueCodecState)), - EbmlSemantic(false, false, EBML_INFO(KaxCueReference)), +DEFINE_SEMANTIC_ITEM(false, true, KaxCueCodecState) +DEFINE_SEMANTIC_ITEM(false, false, KaxCueReference) #endif // MATROSKA_VERSION -}; +DEFINE_END_SEMANTIC(KaxCueTrackPositions) #if MATROSKA_VERSION >= 2 -static const EbmlSemantic ContextList_KaxCueReference[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)), -}; +DEFINE_START_SEMANTIC(KaxCueReference) +DEFINE_SEMANTIC_ITEM(true, true, KaxCueRefTime) +DEFINE_SEMANTIC_ITEM(true, true, KaxCueRefCluster) +DEFINE_SEMANTIC_ITEM(false, true, KaxCueRefNumber) +DEFINE_SEMANTIC_ITEM(false, true, KaxCueRefCodecState) +DEFINE_END_SEMANTIC(KaxCueReference) #endif // MATROSKA_VERSION DEFINE_MKX_MASTER (KaxCuePoint, 0xBB, 1, KaxCues, "CuePoint"); diff --git a/src/KaxInfo.cpp b/src/KaxInfo.cpp index dcc31d7..93ed1c4 100644 --- a/src/KaxInfo.cpp +++ b/src/KaxInfo.cpp @@ -41,23 +41,22 @@ // sub elements START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxInfo[14] = -{ - EbmlSemantic(false, true, EBML_INFO(KaxSegmentUID)), - EbmlSemantic(false, true, EBML_INFO(KaxSegmentFilename)), - EbmlSemantic(false, true, EBML_INFO(KaxPrevUID)), - EbmlSemantic(false, true, EBML_INFO(KaxPrevFilename)), - EbmlSemantic(false, true, EBML_INFO(KaxNextUID)), - EbmlSemantic(false, true, EBML_INFO(KaxNextFilename)), - EbmlSemantic(false, false, EBML_INFO(KaxSegmentFamily)), - EbmlSemantic(false, false, EBML_INFO(KaxChapterTranslate)), - EbmlSemantic(true, true, EBML_INFO(KaxTimecodeScale)), - EbmlSemantic(false, true, EBML_INFO(KaxDuration)), - EbmlSemantic(false, true, EBML_INFO(KaxDateUTC)), - EbmlSemantic(false, true, EBML_INFO(KaxTitle)), - EbmlSemantic(true, true, EBML_INFO(KaxMuxingApp)), - EbmlSemantic(true, true, EBML_INFO(KaxWritingApp)), -}; +DEFINE_START_SEMANTIC(KaxInfo) +DEFINE_SEMANTIC_ITEM(false, true, KaxSegmentUID) +DEFINE_SEMANTIC_ITEM(false, true, KaxSegmentFilename) +DEFINE_SEMANTIC_ITEM(false, true, KaxPrevUID) +DEFINE_SEMANTIC_ITEM(false, true, KaxPrevFilename) +DEFINE_SEMANTIC_ITEM(false, true, KaxNextUID) +DEFINE_SEMANTIC_ITEM(false, true, KaxNextFilename) +DEFINE_SEMANTIC_ITEM(false, false, KaxSegmentFamily) +DEFINE_SEMANTIC_ITEM(false, false, KaxChapterTranslate) +DEFINE_SEMANTIC_ITEM(true, true, KaxTimecodeScale) +DEFINE_SEMANTIC_ITEM(false, true, KaxDuration) +DEFINE_SEMANTIC_ITEM(false, true, KaxDateUTC) +DEFINE_SEMANTIC_ITEM(false, true, KaxTitle) +DEFINE_SEMANTIC_ITEM(true, true, KaxMuxingApp) +DEFINE_SEMANTIC_ITEM(true, true, KaxWritingApp) +DEFINE_END_SEMANTIC(KaxInfo) DEFINE_MKX_MASTER (KaxInfo, 0x1549A966, 4, KaxSegment, "Info"); DEFINE_MKX_UNISTRING(KaxMuxingApp, 0x4D80, 2, KaxInfo, "MuxingApp"); diff --git a/src/KaxInfoData.cpp b/src/KaxInfoData.cpp index 0a5610f..19a03ff 100644 --- a/src/KaxInfoData.cpp +++ b/src/KaxInfoData.cpp @@ -39,12 +39,11 @@ START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxChapterTranslate[3] = -{ - EbmlSemantic(false, false, EBML_INFO(KaxChapterTranslateEditionUID)), - EbmlSemantic(true, true, EBML_INFO(KaxChapterTranslateCodec)), - EbmlSemantic(true, true, EBML_INFO(KaxChapterTranslateID)), -}; +DEFINE_START_SEMANTIC(KaxChapterTranslate) +DEFINE_SEMANTIC_ITEM(false, false, KaxChapterTranslateEditionUID) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTranslateCodec) +DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTranslateID) +DEFINE_END_SEMANTIC(KaxChapterTranslate) DEFINE_MKX_BINARY (KaxSegmentUID, 0x73A4, 2, KaxInfo, "ChapterTranslate"); DEFINE_MKX_UNISTRING (KaxSegmentFilename, 0x7384, 2, KaxInfo, "SegmentFilename"); diff --git a/src/KaxSeekHead.cpp b/src/KaxSeekHead.cpp index 17d7890..9035b52 100644 --- a/src/KaxSeekHead.cpp +++ b/src/KaxSeekHead.cpp @@ -43,16 +43,14 @@ using namespace LIBEBML_NAMESPACE; // sub elements START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxSeekHead[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxSeek)), -}; - -static const EbmlSemantic ContextList_KaxSeek[2] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxSeekID)), - EbmlSemantic(true, true, EBML_INFO(KaxSeekPosition)), -}; +DEFINE_START_SEMANTIC(KaxSeekHead) +DEFINE_SEMANTIC_ITEM(true, false, KaxSeek) +DEFINE_END_SEMANTIC(KaxSeekHead) + +DEFINE_START_SEMANTIC(KaxSeek) +DEFINE_SEMANTIC_ITEM(true, true, KaxSeekID) +DEFINE_SEMANTIC_ITEM(true, true, KaxSeekPosition) +DEFINE_END_SEMANTIC(KaxSeek) DEFINE_MKX_MASTER (KaxSeekHead, 0x114D9B74, 4, KaxSegment, "SeekHeader"); DEFINE_MKX_MASTER (KaxSeek, 0x4DBB, 2, KaxSeekHead, "SeekPoint"); diff --git a/src/KaxSegment.cpp b/src/KaxSegment.cpp index f2527f8..bbd020a 100644 --- a/src/KaxSegment.cpp +++ b/src/KaxSegment.cpp @@ -49,23 +49,21 @@ START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxMatroska[2] = -{ - EbmlSemantic(true, true, EBML_INFO(EbmlHead)), - EbmlSemantic(true, false, EBML_INFO(KaxSegment)), -}; +DEFINE_START_SEMANTIC(KaxMatroska) +DEFINE_SEMANTIC_ITEM(true, true, EbmlHead) +DEFINE_SEMANTIC_ITEM(true, false, KaxSegment) +DEFINE_END_SEMANTIC(KaxMatroska) -static const EbmlSemantic ContextList_KaxSegment[8] = -{ - EbmlSemantic(false, false, EBML_INFO(KaxCluster)), - EbmlSemantic(false, false, EBML_INFO(KaxSeekHead)), - EbmlSemantic(false, true, EBML_INFO(KaxCues)), - EbmlSemantic(false, false, EBML_INFO(KaxTracks)), - EbmlSemantic(true, true, EBML_INFO(KaxInfo)), - EbmlSemantic(false, true, EBML_INFO(KaxChapters)), - EbmlSemantic(false, true, EBML_INFO(KaxAttachments)), - EbmlSemantic(false, true, EBML_INFO(KaxTags)), -}; +DEFINE_START_SEMANTIC(KaxSegment) +DEFINE_SEMANTIC_ITEM(false, false, KaxCluster) +DEFINE_SEMANTIC_ITEM(false, false, KaxSeekHead) +DEFINE_SEMANTIC_ITEM(false, true, KaxCues) +DEFINE_SEMANTIC_ITEM(false, false, KaxTracks) +DEFINE_SEMANTIC_ITEM(true, true, KaxInfo) +DEFINE_SEMANTIC_ITEM(false, true, KaxChapters) +DEFINE_SEMANTIC_ITEM(false, true, KaxAttachments) +DEFINE_SEMANTIC_ITEM(false, true, KaxTags) +DEFINE_END_SEMANTIC(KaxSegment) DEFINE_MKX_CONTEXT(KaxMatroska); diff --git a/src/KaxTag.cpp b/src/KaxTag.cpp index f9d56c1..adc532f 100644 --- a/src/KaxTag.cpp +++ b/src/KaxTag.cpp @@ -43,99 +43,92 @@ using namespace LIBEBML_NAMESPACE; // sub elements START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxTag[14] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxTagTargets)), - EbmlSemantic(false, true, EBML_INFO(KaxTagGeneral)), - EbmlSemantic(false, true, EBML_INFO(KaxTagGenres)), - EbmlSemantic(false, true, EBML_INFO(KaxTagAudioSpecific)), - EbmlSemantic(false, true, EBML_INFO(KaxTagImageSpecific)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommercial)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDate)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiEntity)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifier)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiLegal)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitle)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiAttachment)), -// EbmlSemantic(false, false, EBML_INFO(KaxTagLength)), -// EbmlSemantic(false, false, EBML_INFO(KaxTagPlaylistDelay)), -// EbmlSemantic(false, false, EBML_INFO(KaxTagUnsynchronisedText)), -// EbmlSemantic(false, false, EBML_INFO(KaxTagUserDefinedURL)), - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiComment)), - EbmlSemantic(true, false, EBML_INFO(KaxTagSimple)), -}; +DEFINE_START_SEMANTIC(KaxTag) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagTargets) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagGeneral) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagGenres) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagAudioSpecific) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagImageSpecific) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommercial) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiDate) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiEntity) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiIdentifier) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiLegal) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitle) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiAttachment) +//DEFINE_SEMANTIC_ITEM(false, false, KaxTagLength) +//DEFINE_SEMANTIC_ITEM(false, false, KaxTagPlaylistDelay) +//DEFINE_SEMANTIC_ITEM(false, false, KaxTagUnsynchronisedText) +//DEFINE_SEMANTIC_ITEM(false, false, KaxTagUserDefinedURL) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiComment) +DEFINE_SEMANTIC_ITEM(true, false, KaxTagSimple) +DEFINE_END_SEMANTIC(KaxTag) -static const EbmlSemantic ContextList_KaxTagTargets[6] = -{ - EbmlSemantic(false, true, EBML_INFO(KaxTagTargetTypeValue)), - EbmlSemantic(false, true, EBML_INFO(KaxTagTargetType)), - EbmlSemantic(false, false, EBML_INFO(KaxTagTrackUID)), - EbmlSemantic(false, false, EBML_INFO(KaxTagEditionUID)), - EbmlSemantic(false, false, EBML_INFO(KaxTagChapterUID)), - EbmlSemantic(false, false, EBML_INFO(KaxTagAttachmentUID)), -}; +DEFINE_START_SEMANTIC(KaxTagTargets) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagTargetTypeValue) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagTargetType) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagTrackUID) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagEditionUID) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagChapterUID) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagAttachmentUID) +DEFINE_END_SEMANTIC(KaxTagTargets) -static const EbmlSemantic ContextList_KaxTagGeneral[17] = -{ - EbmlSemantic(false, true, EBML_INFO(KaxTagArchivalLocation)), - EbmlSemantic(false, true, EBML_INFO(KaxTagFile)), - EbmlSemantic(false, false, EBML_INFO(KaxTagKeywords)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMood)), - EbmlSemantic(false, false, EBML_INFO(KaxTagRecordLocation)), - EbmlSemantic(false, true, EBML_INFO(KaxTagSource)), - EbmlSemantic(false, true, EBML_INFO(KaxTagSourceForm)), - EbmlSemantic(false, true, EBML_INFO(KaxTagProduct)), - EbmlSemantic(false, true, EBML_INFO(KaxTagOriginalMediaType)), - EbmlSemantic(false, true, EBML_INFO(KaxTagPlayCounter)), - EbmlSemantic(false, true, EBML_INFO(KaxTagPopularimeter)), - EbmlSemantic(false, true, EBML_INFO(KaxTagSubject)), - EbmlSemantic(false, true, EBML_INFO(KaxTagBibliography)), - EbmlSemantic(false, true, EBML_INFO(KaxTagLanguage)), - EbmlSemantic(false, true, EBML_INFO(KaxTagRating)), - EbmlSemantic(false, true, EBML_INFO(KaxTagEncoder)), - EbmlSemantic(false, true, EBML_INFO(KaxTagEncodeSettings)), -}; +DEFINE_START_SEMANTIC(KaxTagGeneral) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagArchivalLocation) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagFile) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagKeywords) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMood) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagRecordLocation) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagSource) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagSourceForm) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagProduct) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagOriginalMediaType) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagPlayCounter) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagPopularimeter) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagSubject) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagBibliography) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagLanguage) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagRating) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagEncoder) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagEncodeSettings) +DEFINE_END_SEMANTIC(KaxTagGeneral) -static const EbmlSemantic ContextList_KaxTagGenres[3] = -{ - EbmlSemantic(false, false, EBML_INFO(KaxTagAudioGenre)), - EbmlSemantic(false, false, EBML_INFO(KaxTagVideoGenre)), - EbmlSemantic(false, true, EBML_INFO(KaxTagSubGenre)), -}; +DEFINE_START_SEMANTIC(KaxTagGenres) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagAudioGenre) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagVideoGenre) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagSubGenre) +DEFINE_END_SEMANTIC(KaxTagGenres) -static const EbmlSemantic ContextList_KaxTagAudioSpecific[10] = -{ - EbmlSemantic(false, true, EBML_INFO(KaxTagAudioPeak)), - EbmlSemantic(false, true, EBML_INFO(KaxTagAudioEncryption)), - EbmlSemantic(false, true, EBML_INFO(KaxTagAudioGain)), - EbmlSemantic(false, true, EBML_INFO(KaxTagBPM)), - EbmlSemantic(false, true, EBML_INFO(KaxTagDiscTrack)), - EbmlSemantic(false, true, EBML_INFO(KaxTagSetPart)), - EbmlSemantic(false, true, EBML_INFO(KaxTagEqualisation)), - EbmlSemantic(false, true, EBML_INFO(KaxTagInitialKey)), - EbmlSemantic(false, true, EBML_INFO(KaxTagOfficialAudioFileURL)), - EbmlSemantic(false, true, EBML_INFO(KaxTagOfficialAudioSourceURL)), -}; +DEFINE_START_SEMANTIC(KaxTagAudioSpecific) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagAudioPeak) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagAudioEncryption) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagAudioGain) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagBPM) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagDiscTrack) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagSetPart) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagEqualisation) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagInitialKey) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagOfficialAudioFileURL) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagOfficialAudioSourceURL) +DEFINE_END_SEMANTIC(KaxTagAudioSpecific) -static const EbmlSemantic ContextList_KaxTagImageSpecific[6] = -{ - EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureDPI)), - EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureLightness)), - EbmlSemantic(false, true, EBML_INFO(KaxTagCapturePaletteSetting)), - EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureSharpness)), - EbmlSemantic(false, true, EBML_INFO(KaxTagCropped)), - EbmlSemantic(false, true, EBML_INFO(KaxTagOriginalDimensions)), -}; +DEFINE_START_SEMANTIC(KaxTagImageSpecific) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagCaptureDPI) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagCaptureLightness) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagCapturePaletteSetting) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagCaptureSharpness) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagCropped) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagOriginalDimensions) +DEFINE_END_SEMANTIC(KaxTagImageSpecific) -static const EbmlSemantic ContextList_KaxTagSimple[6] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxTagName)), - EbmlSemantic(true, true, EBML_INFO(KaxTagLangue)), - EbmlSemantic(true, true, EBML_INFO(KaxTagDefault)), - EbmlSemantic(false, true, EBML_INFO(KaxTagString)), - EbmlSemantic(false, true, EBML_INFO(KaxTagBinary)), - EbmlSemantic(false, false, EBML_INFO(KaxTagSimple)), -}; +DEFINE_START_SEMANTIC(KaxTagSimple) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagName) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagLangue) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagDefault) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagString) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagBinary) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagSimple) +DEFINE_END_SEMANTIC(KaxTagSimple) DEFINE_MKX_MASTER (KaxTag, 0x7373, 2, KaxTags, "Tag"); DEFINE_MKX_MASTER (KaxTagTargets, 0x63C0, 2, KaxTag, "TagTargets"); diff --git a/src/KaxTagMulti.cpp b/src/KaxTagMulti.cpp index 5034575..44e34d2 100644 --- a/src/KaxTagMulti.cpp +++ b/src/KaxTagMulti.cpp @@ -41,116 +41,99 @@ using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxTagMultiGlobal[1] = -{ - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiComment)), -}; - -static const EbmlSemantic ContextList_KaxTagMultiComment[3] = -{ - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentName)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentComments)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentLanguage)), -}; - -static const EbmlSemantic ContextList_KaxTagMultiCommercial[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxTagCommercial)), -}; - -static const EbmlSemantic ContextList_KaxTagCommercial[5] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxTagMultiCommercialType)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommercialAddress)), - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiCommercialURL)), - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiCommercialEmail)), - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiPrice)), -}; - -static const EbmlSemantic ContextList_KaxTagMultiPrice[3] = -{ - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPriceCurrency)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPriceAmount)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPricePriceDate)), -}; - -static const EbmlSemantic ContextList_KaxTagMultiDate[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxTagDate)), -}; - -static const EbmlSemantic ContextList_KaxTagDate[3] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxTagMultiDateType)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDateDateBegin)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDateDateEnd)), -}; - -static const EbmlSemantic ContextList_KaxTagMultiEntity[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxTagEntity)), -}; - -static const EbmlSemantic ContextList_KaxTagEntity[5] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxTagMultiEntityType)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiEntityName)), - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiEntityURL)), - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiEntityEmail)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiEntityAddress)), -}; - -static const EbmlSemantic ContextList_KaxTagMultiIdentifier[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxTagIdentifier)), -}; - -static const EbmlSemantic ContextList_KaxTagIdentifier[3] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxTagMultiIdentifierType)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifierBinary)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifierString)), -}; - -static const EbmlSemantic ContextList_KaxTagMultiLegal[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxTagLegal)), -}; - -static const EbmlSemantic ContextList_KaxTagLegal[4] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxTagMultiLegalType)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiLegalContent)), - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiLegalURL)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiLegalAddress)), -}; - -static const EbmlSemantic ContextList_KaxTagMultiTitle[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxTagTitle)), -}; - -static const EbmlSemantic ContextList_KaxTagTitle[8] = -{ - EbmlSemantic(true, true, EBML_INFO(KaxTagMultiTitleType)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleName)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleSubTitle)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleEdition)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleAddress)), - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiTitleURL)), - EbmlSemantic(false, false, EBML_INFO(KaxTagMultiTitleEmail)), - EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleLanguage)), -}; - -static const EbmlSemantic ContextList_KaxTagMultiAttachment[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxTagAttachment)), -}; - -static const EbmlSemantic ContextList_KaxTagAttachment[1] = -{ - EbmlSemantic(false, true, EBML_INFO(KaxTagAttachmentID)), -}; +DEFINE_START_SEMANTIC(KaxTagMultiGlobal) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiComment) +DEFINE_END_SEMANTIC(KaxTagMultiGlobal) + +DEFINE_START_SEMANTIC(KaxTagMultiComment) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommentName) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommentComments) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommentLanguage) +DEFINE_END_SEMANTIC(KaxTagMultiComment) + +DEFINE_START_SEMANTIC(KaxTagMultiCommercial) +DEFINE_SEMANTIC_ITEM(true, false, KaxTagCommercial) +DEFINE_END_SEMANTIC(KaxTagMultiCommercial) + +DEFINE_START_SEMANTIC(KaxTagCommercial) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiCommercialType) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommercialAddress) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiCommercialURL) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiCommercialEmail) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiPrice) +DEFINE_END_SEMANTIC(KaxTagCommercial) + +DEFINE_START_SEMANTIC(KaxTagMultiPrice) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiPriceCurrency) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiPriceAmount) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiPricePriceDate) +DEFINE_END_SEMANTIC(KaxTagMultiPrice) + +DEFINE_START_SEMANTIC(KaxTagMultiDate) +DEFINE_SEMANTIC_ITEM(true, false, KaxTagDate) +DEFINE_END_SEMANTIC(KaxTagMultiDate) + +DEFINE_START_SEMANTIC(KaxTagDate) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiDateType) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiDateDateBegin) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiDateDateEnd) +DEFINE_END_SEMANTIC(KaxTagDate) + +DEFINE_START_SEMANTIC(KaxTagMultiEntity) +DEFINE_SEMANTIC_ITEM(true, false, KaxTagEntity) +DEFINE_END_SEMANTIC(KaxTagMultiEntity) + +DEFINE_START_SEMANTIC(KaxTagEntity) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiEntityType) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiEntityName) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiEntityURL) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiEntityEmail) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiEntityAddress) +DEFINE_END_SEMANTIC(KaxTagEntity) + +DEFINE_START_SEMANTIC(KaxTagMultiIdentifier) +DEFINE_SEMANTIC_ITEM(true, false, KaxTagIdentifier) +DEFINE_END_SEMANTIC(KaxTagMultiIdentifier) + +DEFINE_START_SEMANTIC(KaxTagIdentifier) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiIdentifierType) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiIdentifierBinary) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiIdentifierString) +DEFINE_END_SEMANTIC(KaxTagIdentifier) + +DEFINE_START_SEMANTIC(KaxTagMultiLegal) +DEFINE_SEMANTIC_ITEM(true, false, KaxTagLegal) +DEFINE_END_SEMANTIC(KaxTagMultiLegal) + +DEFINE_START_SEMANTIC(KaxTagLegal) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiLegalType) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiLegalContent) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiLegalURL) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiLegalAddress) +DEFINE_END_SEMANTIC(KaxTagLegal) + +DEFINE_START_SEMANTIC(KaxTagMultiTitle) +DEFINE_SEMANTIC_ITEM(true, false, KaxTagTitle) +DEFINE_END_SEMANTIC(KaxTagMultiTitle) + +DEFINE_START_SEMANTIC(KaxTagTitle) +DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiTitleType) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleName) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleSubTitle) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleEdition) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleAddress) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiTitleURL) +DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiTitleEmail) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleLanguage) +DEFINE_END_SEMANTIC(KaxTagTitle) + +DEFINE_START_SEMANTIC(KaxTagMultiAttachment) +DEFINE_SEMANTIC_ITEM(true, false, KaxTagAttachment) +DEFINE_END_SEMANTIC(KaxTagMultiAttachment) + +DEFINE_START_SEMANTIC(KaxTagAttachment) +DEFINE_SEMANTIC_ITEM(false, true, KaxTagAttachmentID) +DEFINE_END_SEMANTIC(KaxTagAttachment) DEFINE_MKX_CONTEXT(KaxTagMultiGlobal); diff --git a/src/KaxTags.cpp b/src/KaxTags.cpp index 58682dd..78ec09e 100644 --- a/src/KaxTags.cpp +++ b/src/KaxTags.cpp @@ -43,10 +43,9 @@ using namespace LIBEBML_NAMESPACE; // sub elements START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxTags[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxTag)), -}; +DEFINE_START_SEMANTIC(KaxTags) +DEFINE_SEMANTIC_ITEM(true, false, KaxTag) +DEFINE_END_SEMANTIC(KaxTags) DEFINE_MKX_MASTER(KaxTags, 0x1254C367, 4, KaxSegment, "Tags"); diff --git a/src/KaxTrackAudio.cpp b/src/KaxTrackAudio.cpp index 152a06f..e967cc2 100644 --- a/src/KaxTrackAudio.cpp +++ b/src/KaxTrackAudio.cpp @@ -40,20 +40,15 @@ START_LIBMATROSKA_NAMESPACE -#if MATROSKA_VERSION == 1 -static const EbmlSemantic ContextList_KaxTrackAudio[4] = -#else // MATROSKA_VERSION -static const EbmlSemantic ContextList_KaxTrackAudio[5] = -#endif // MATROSKA_VERSION -{ - EbmlSemantic(true , true, EBML_INFO(KaxAudioSamplingFreq)), - EbmlSemantic(true , true, EBML_INFO(KaxAudioChannels)), - EbmlSemantic(false, true, EBML_INFO(KaxAudioBitDepth)), - EbmlSemantic(false, true, EBML_INFO(KaxAudioOutputSamplingFreq)), +DEFINE_START_SEMANTIC(KaxTrackAudio) +DEFINE_SEMANTIC_ITEM(true, true, KaxAudioSamplingFreq) +DEFINE_SEMANTIC_ITEM(true, true, KaxAudioChannels) +DEFINE_SEMANTIC_ITEM(false, true, KaxAudioBitDepth) +DEFINE_SEMANTIC_ITEM(false, true, KaxAudioOutputSamplingFreq) #if MATROSKA_VERSION >= 2 - EbmlSemantic(false, true, EBML_INFO(KaxAudioPosition)), +DEFINE_SEMANTIC_ITEM(false, true, KaxAudioPosition) #endif // MATROSKA_VERSION -}; +DEFINE_END_SEMANTIC(KaxTrackAudio) DEFINE_MKX_MASTER (KaxTrackAudio, 0xE1, 1, KaxTrackEntry, "TrackAudio"); DEFINE_MKX_FLOAT_DEF (KaxAudioSamplingFreq, 0xB5, 1, KaxTrackAudio, "AudioSamplingFreq", 8000.0); diff --git a/src/KaxTrackEntryData.cpp b/src/KaxTrackEntryData.cpp index 2846974..eadfe67 100644 --- a/src/KaxTrackEntryData.cpp +++ b/src/KaxTrackEntryData.cpp @@ -39,12 +39,11 @@ START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxTrackTranslate[3] = -{ - EbmlSemantic(false, false,EBML_INFO(KaxTrackTranslateEditionUID)), - EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateCodec)), - EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateTrackID)), -}; +DEFINE_START_SEMANTIC(KaxTrackTranslate) +DEFINE_SEMANTIC_ITEM(false, false, KaxTrackTranslateEditionUID) +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackTranslateCodec) +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackTranslateTrackID) +DEFINE_END_SEMANTIC(KaxTrackTranslate) DEFINE_MKX_UINTEGER (KaxTrackNumber, 0xD7, 1, KaxTracks, "TrackNumber"); DEFINE_MKX_UINTEGER (KaxTrackUID, 0x73C5, 2, KaxTracks, "TrackUID"); diff --git a/src/KaxTrackVideo.cpp b/src/KaxTrackVideo.cpp index e8660ef..d522053 100644 --- a/src/KaxTrackVideo.cpp +++ b/src/KaxTrackVideo.cpp @@ -40,30 +40,25 @@ START_LIBMATROSKA_NAMESPACE -#if MATROSKA_VERSION == 1 -static const EbmlSemantic ContextList_KaxTrackVideo[10] = -#else // MATROSKA_VERSION -static const EbmlSemantic ContextList_KaxTrackVideo[15] = -#endif // MATROSKA_VERSION -{ - EbmlSemantic(true , true, EBML_INFO(KaxVideoPixelWidth)), - EbmlSemantic(true , true, EBML_INFO(KaxVideoPixelHeight)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropBottom)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropTop)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropLeft)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropRight)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoDisplayWidth)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoDisplayHeight)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoColourSpace)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoFrameRate)), +DEFINE_START_SEMANTIC(KaxTrackVideo) +DEFINE_SEMANTIC_ITEM(true, true, KaxVideoPixelWidth) +DEFINE_SEMANTIC_ITEM(true, true, KaxVideoPixelHeight) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropBottom) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropTop) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropLeft) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropRight) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoDisplayWidth) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoDisplayHeight) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoColourSpace) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoFrameRate) #if MATROSKA_VERSION >= 2 - EbmlSemantic(true , true, EBML_INFO(KaxVideoFlagInterlaced)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoStereoMode)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoDisplayUnit)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoAspectRatio)), - EbmlSemantic(false, true, EBML_INFO(KaxVideoGamma)), +DEFINE_SEMANTIC_ITEM(true, true, KaxVideoFlagInterlaced) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoStereoMode) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoDisplayUnit) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoAspectRatio) +DEFINE_SEMANTIC_ITEM(false, true, KaxVideoGamma) #endif // MATROSKA_VERSION -}; +DEFINE_END_SEMANTIC(KaxTrackVideo) DEFINE_MKX_MASTER (KaxTrackVideo, 0xE0, 1, KaxTrackEntry, "TrackVideo"); DEFINE_MKX_UINTEGER (KaxVideoPixelWidth, 0xB0, 1, KaxTrackVideo, "VideoPixelWidth"); diff --git a/src/KaxTracks.cpp b/src/KaxTracks.cpp index 9287f1f..0ca2b32 100644 --- a/src/KaxTracks.cpp +++ b/src/KaxTracks.cpp @@ -44,49 +44,43 @@ START_LIBMATROSKA_NAMESPACE -static const EbmlSemantic ContextList_KaxTracks[1] = -{ - EbmlSemantic(true, false, EBML_INFO(KaxTrackEntry)), -}; +DEFINE_START_SEMANTIC(KaxTracks) +DEFINE_SEMANTIC_ITEM(true, false, KaxTrackEntry) +DEFINE_END_SEMANTIC(KaxTracks) -#if MATROSKA_VERSION == 1 -static const EbmlSemantic ContextList_KaxTrackEntry[22] = -#else // MATROSKA_VERSION -static const EbmlSemantic ContextList_KaxTrackEntry[27] = -#endif // MATROSKA_VERSION -{ - EbmlSemantic(true , true, EBML_INFO(KaxTrackNumber)), - EbmlSemantic(true , true, EBML_INFO(KaxTrackUID)), - EbmlSemantic(true , true, EBML_INFO(KaxTrackType)), +DEFINE_START_SEMANTIC(KaxTrackEntry) +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackNumber) +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackUID) +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackType) #if MATROSKA_VERSION >= 2 - EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagEnabled)), +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagEnabled) #endif // MATROSKA_VERSION - EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagDefault)), - EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagForced)), - EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagLacing)), - EbmlSemantic(true , true, EBML_INFO(KaxTrackMinCache)), - EbmlSemantic(false, true, EBML_INFO(KaxTrackMaxCache)), - EbmlSemantic(false, true, EBML_INFO(KaxTrackDefaultDuration)), - EbmlSemantic(true , true, EBML_INFO(KaxTrackTimecodeScale)), - EbmlSemantic(true , true, EBML_INFO(KaxMaxBlockAdditionID)), - EbmlSemantic(false, true, EBML_INFO(KaxTrackName)), - EbmlSemantic(false, true, EBML_INFO(KaxTrackLanguage)), - EbmlSemantic(true , true, EBML_INFO(KaxCodecID)), - EbmlSemantic(false, true, EBML_INFO(KaxCodecPrivate)), - EbmlSemantic(false, true, EBML_INFO(KaxCodecName)), - EbmlSemantic(false, true, EBML_INFO(KaxTrackAttachmentLink)), +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagDefault) +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagForced) +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagLacing) +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackMinCache) +DEFINE_SEMANTIC_ITEM(false, true, KaxTrackMaxCache) +DEFINE_SEMANTIC_ITEM(false, true, KaxTrackDefaultDuration) +DEFINE_SEMANTIC_ITEM(true, true, KaxTrackTimecodeScale) +DEFINE_SEMANTIC_ITEM(true, true, KaxMaxBlockAdditionID) +DEFINE_SEMANTIC_ITEM(false, true, KaxTrackName) +DEFINE_SEMANTIC_ITEM(false, true, KaxTrackLanguage) +DEFINE_SEMANTIC_ITEM(true, true, KaxCodecID) +DEFINE_SEMANTIC_ITEM(false, true, KaxCodecPrivate) +DEFINE_SEMANTIC_ITEM(false, true, KaxCodecName) +DEFINE_SEMANTIC_ITEM(false, true, KaxTrackAttachmentLink) #if MATROSKA_VERSION >= 2 - EbmlSemantic(false, true, EBML_INFO(KaxCodecSettings)), - EbmlSemantic(false, false,EBML_INFO(KaxCodecInfoURL)), - EbmlSemantic(false, false,EBML_INFO(KaxCodecDownloadURL)), - EbmlSemantic(true , true, EBML_INFO(KaxCodecDecodeAll)), +DEFINE_SEMANTIC_ITEM(false, true, KaxCodecSettings) +DEFINE_SEMANTIC_ITEM(false, false, KaxCodecInfoURL) +DEFINE_SEMANTIC_ITEM(false, false, KaxCodecDownloadURL) +DEFINE_SEMANTIC_ITEM(true, true, KaxCodecDecodeAll) #endif // MATROSKA_VERSION - EbmlSemantic(false, false,EBML_INFO(KaxTrackOverlay)), - EbmlSemantic(false, false,EBML_INFO(KaxTrackTranslate)), - EbmlSemantic(false, true, EBML_INFO(KaxTrackAudio)), - EbmlSemantic(false, true, EBML_INFO(KaxTrackVideo)), - EbmlSemantic(false, true, EBML_INFO(KaxContentEncodings)), -}; +DEFINE_SEMANTIC_ITEM(false, false, KaxTrackOverlay) +DEFINE_SEMANTIC_ITEM(false, false, KaxTrackTranslate) +DEFINE_SEMANTIC_ITEM(false, true, KaxTrackAudio) +DEFINE_SEMANTIC_ITEM(false, true, KaxTrackVideo) +DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncodings) +DEFINE_END_SEMANTIC(KaxTrackEntry) DEFINE_MKX_MASTER (KaxTracks, 0x1654AE6B, 4, KaxSegment, "Tracks"); DEFINE_MKX_MASTER_CONS(KaxTrackEntry, 0xAE, 1, KaxTracks, "TrackEntry");