diff --git a/matroska/KaxBlock.h b/matroska/KaxBlock.h index 99e24f3f..7a27cdee 100644 --- a/matroska/KaxBlock.h +++ b/matroska/KaxBlock.h @@ -184,7 +184,7 @@ class MATROSKA_DLL_API KaxInternalBlock : public libebml::EbmlBinary { {} KaxInternalBlock(const KaxInternalBlock & ElementToClone); ~KaxInternalBlock() override; - bool SizeIsValid(std::uint64_t size) const override + static inline bool SizeIsValid(std::uint64_t size) { return size >= 4; /// for the moment } diff --git a/matroska/KaxDefines.h b/matroska/KaxDefines.h index 0890ea49..7f6614cc 100644 --- a/matroska/KaxDefines.h +++ b/matroska/KaxDefines.h @@ -41,14 +41,14 @@ class MATROSKA_DLL_API MatroskaProfile : public libebml::EbmlDocVersion #define DEFINE_MKX_STRING_DEF(a,b,d,e,versions,v) DEFINE_xxx_STRING_DEF(a,b,d,e,versions,GetKaxGlobal_Context,v) #define DEFINE_MKX_STRING(a,b,d,e,versions) DEFINE_xxx_STRING(a,b,d,e,versions,GetKaxGlobal_Context) #define DEFINE_MKX_UNISTRING(a,b,d,e,versions) DEFINE_xxx_UNISTRING(a,b,d,e,versions,GetKaxGlobal_Context) -#define DEFINE_MKX_BINARY(a,b,d,e,versions) DEFINE_xxx_BINARY(a,b,d,e,versions,GetKaxGlobal_Context) +#define DEFINE_MKX_BINARY(a,b,d,e,valid,versions) DEFINE_xxx_BINARY(a,b,d,e,valid,versions,GetKaxGlobal_Context) #define DEFINE_MKX_FLOAT_DEF(a,b,d,e,versions,v) DEFINE_xxx_FLOAT_DEF(a,b,d,e,versions,GetKaxGlobal_Context,v) #define DEFINE_MKX_FLOAT(a,b,d,e,versions) DEFINE_xxx_FLOAT(a,b,d,e,versions,GetKaxGlobal_Context) #define DEFINE_MKX_DATE(a,b,d,e,versions) DEFINE_xxx_DATE(a,b,d,e,versions,GetKaxGlobal_Context) -#define DEFINE_MKX_BINARY_CONS(a,b,d,e,versions) DEFINE_xxx_CLASS_CONS(a,b,d,e,GetKaxGlobal_Context) \ - constexpr const libebml::EbmlCallbacks a::ClassInfos(a::Create, Id_##a, false, false, e, Context_##a, versions); +#define DEFINE_MKX_BINARY_CONS(a,b,d,e,valid,versions) DEFINE_xxx_CLASS_CONS(a,b,d,e,GetKaxGlobal_Context) \ + constexpr const libebml::EbmlCallbacks a::ClassInfos(a::Create, Id_##a, false, false, e, Context_##a, versions, valid); #define DEFINE_MKX_SINTEGER_CONS(a,b,d,e,versions) DEFINE_xxx_CLASS_CONS(a,b,d,e,GetKaxGlobal_Context) \ - const libebml::EbmlCallbacksDefault a::ClassInfos(a::Create, Id_##a, e, Context_##a, versions); + const libebml::EbmlCallbacksDefault a::ClassInfos(a::Create, Id_##a, e, Context_##a, versions, libebml::EbmlSInteger::SizeIsValid); #define MATROSKA_CLASS_BODY(x) \ EBML_CONCRETE_CLASS(x) diff --git a/matroska/KaxSemantic.h b/matroska/KaxSemantic.h index 34652cc8..33e08ff4 100644 --- a/matroska/KaxSemantic.h +++ b/matroska/KaxSemantic.h @@ -22,7 +22,8 @@ #include "matroska/KaxDefines.h" namespace libmatroska { -DECLARE_MKX_BINARY_LENGTH(KaxSeekID, 4) +DECLARE_MKX_BINARY(KaxSeekID) + static inline bool SizeIsValid(std::uint64_t Size) {return Size == 4;} }; DECLARE_MKX_UINTEGER(KaxSeekPosition) @@ -31,25 +32,29 @@ DECLARE_MKX_UINTEGER(KaxSeekPosition) DECLARE_MKX_MASTER(KaxInfo) }; -DECLARE_MKX_BINARY_LENGTH(KaxSegmentUID, 16) +DECLARE_MKX_BINARY(KaxSegmentUID) + static inline bool SizeIsValid(std::uint64_t Size) {return Size == 16;} }; DECLARE_MKX_UNISTRING(KaxSegmentFilename) }; -DECLARE_MKX_BINARY_LENGTH(KaxPrevUID, 16) +DECLARE_MKX_BINARY(KaxPrevUID) + static inline bool SizeIsValid(std::uint64_t Size) {return Size == 16;} }; DECLARE_MKX_UNISTRING(KaxPrevFilename) }; -DECLARE_MKX_BINARY_LENGTH(KaxNextUID, 16) +DECLARE_MKX_BINARY(KaxNextUID) + static inline bool SizeIsValid(std::uint64_t Size) {return Size == 16;} }; DECLARE_MKX_UNISTRING(KaxNextFilename) }; -DECLARE_MKX_BINARY_LENGTH(KaxSegmentFamily, 16) +DECLARE_MKX_BINARY(KaxSegmentFamily) + static inline bool SizeIsValid(std::uint64_t Size) {return Size == 16;} }; DECLARE_MKX_MASTER(KaxChapterTranslate) @@ -386,7 +391,8 @@ DECLARE_MKX_UINTEGER_DEF(KaxVideoAspectRatio) libebml::filepos_t RenderData(libebml::IOCallback & output, bool bForceRender, const ShouldWrite & writeFilter) override; }; -DECLARE_MKX_BINARY_LENGTH(KaxVideoColourSpace, 4) +DECLARE_MKX_BINARY(KaxVideoColourSpace) + static inline bool SizeIsValid(std::uint64_t Size) {return Size == 4;} }; DECLARE_MKX_FLOAT(KaxVideoGamma) @@ -541,9 +547,10 @@ DECLARE_MKX_UINTEGER(KaxTrickTrackUID) libebml::filepos_t RenderData(libebml::IOCallback & output, bool bForceRender, const ShouldWrite & writeFilter) override; }; -DECLARE_MKX_BINARY_LENGTH(KaxTrickTrackSegmentUID, 16) +DECLARE_MKX_BINARY(KaxTrickTrackSegmentUID) public: libebml::filepos_t RenderData(libebml::IOCallback & output, bool bForceRender, const ShouldWrite & writeFilter) override; + static inline bool SizeIsValid(std::uint64_t Size) {return Size == 16;} }; DECLARE_MKX_UINTEGER_DEF(KaxTrickTrackFlag) @@ -556,9 +563,10 @@ DECLARE_MKX_UINTEGER(KaxTrickMasterTrackUID) libebml::filepos_t RenderData(libebml::IOCallback & output, bool bForceRender, const ShouldWrite & writeFilter) override; }; -DECLARE_MKX_BINARY_LENGTH(KaxTrickMasterTrackSegmentUID, 16) +DECLARE_MKX_BINARY(KaxTrickMasterTrackSegmentUID) public: libebml::filepos_t RenderData(libebml::IOCallback & output, bool bForceRender, const ShouldWrite & writeFilter) override; + static inline bool SizeIsValid(std::uint64_t Size) {return Size == 16;} }; DECLARE_MKX_MASTER(KaxContentEncodings) @@ -743,7 +751,8 @@ DECLARE_MKX_UINTEGER_DEF(KaxChapterFlagHidden) DECLARE_MKX_UINTEGER_DEF(KaxChapterFlagEnabled) }; -DECLARE_MKX_BINARY_LENGTH(KaxChapterSegmentUID, 16) +DECLARE_MKX_BINARY(KaxChapterSegmentUID) + static inline bool SizeIsValid(std::uint64_t Size) {return Size == 16;} }; DECLARE_MKX_UINTEGER(KaxChapterSkipType) @@ -1164,7 +1173,7 @@ typedef enum { *Indicate what type of content the ChapterAtom contains and might be skipped. It can be used to automatically skip content based on the type. If a `ChapterAtom` is inside a `ChapterAtom` that has a `ChapterSkipType` set, it **MUST NOT** have a `ChapterSkipType` or have a `ChapterSkipType` with the same value as it's parent `ChapterAtom`. If the `ChapterAtom` doesn't contain a `ChapterTimeEnd`, the value of the `ChapterSkipType` is only valid until the next `ChapterAtom` with a `ChapterSkipType` value or the end of the file. - + */ typedef enum { MATROSKA_CHAPTERSKIPTYPE_NO_SKIPPING = 0, // Content which should not be skipped. diff --git a/src/KaxSemantic.cpp b/src/KaxSemantic.cpp index dd40209c..26efc7b2 100644 --- a/src/KaxSemantic.cpp +++ b/src/KaxSemantic.cpp @@ -74,7 +74,7 @@ DEFINE_SEMANTIC_ITEM(true, true, KaxSeekPosition) DEFINE_END_SEMANTIC(KaxSeek) DEFINE_MKX_MASTER(KaxSeek, 0x4DBB, KaxSeekHead, false, "SeekPoint", VERSION_ALL_MATROSKA) -DEFINE_MKX_BINARY (KaxSeekID, 0x53AB, KaxSeek, "SeekID", VERSION_ALL_MATROSKA) +DEFINE_MKX_BINARY (KaxSeekID, 0x53AB, KaxSeek, "SeekID", KaxSeekID::SizeIsValid, VERSION_ALL_MATROSKA) DEFINE_MKX_UINTEGER(KaxSeekPosition, 0x53AC, KaxSeek, "SeekPosition", VERSION_ALL_MATROSKA) DEFINE_START_SEMANTIC(KaxInfo) @@ -95,13 +95,13 @@ DEFINE_SEMANTIC_ITEM(true, true, KaxWritingApp) DEFINE_END_SEMANTIC(KaxInfo) DEFINE_MKX_MASTER(KaxInfo, 0x1549A966, KaxSegment, false, "Info", VERSION_ALL_MATROSKA) -DEFINE_MKX_BINARY (KaxSegmentUID, 0x73A4, KaxInfo, "SegmentUID", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxSegmentUID, 0x73A4, KaxInfo, "SegmentUID", KaxSegmentUID::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_MKX_UNISTRING(KaxSegmentFilename, 0x7384, KaxInfo, "SegmentFilename", VERSION_MATROSKA_ONLY) -DEFINE_MKX_BINARY (KaxPrevUID, 0x3CB923, KaxInfo, "PrevUID", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxPrevUID, 0x3CB923, KaxInfo, "PrevUID", KaxPrevUID::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_MKX_UNISTRING(KaxPrevFilename, 0x3C83AB, KaxInfo, "PrevFilename", VERSION_MATROSKA_ONLY) -DEFINE_MKX_BINARY (KaxNextUID, 0x3EB923, KaxInfo, "NextUID", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxNextUID, 0x3EB923, KaxInfo, "NextUID", KaxNextUID::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_MKX_UNISTRING(KaxNextFilename, 0x3E83BB, KaxInfo, "NextFilename", VERSION_MATROSKA_ONLY) -DEFINE_MKX_BINARY (KaxSegmentFamily, 0x4444, KaxInfo, "SegmentFamily", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxSegmentFamily, 0x4444, KaxInfo, "SegmentFamily", KaxSegmentFamily::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_START_SEMANTIC(KaxChapterTranslate) DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTranslateID) @@ -110,7 +110,7 @@ DEFINE_SEMANTIC_ITEM(false, false, KaxChapterTranslateEditionUID) DEFINE_END_SEMANTIC(KaxChapterTranslate) DEFINE_MKX_MASTER(KaxChapterTranslate, 0x6924, KaxInfo, false, "ChapterTranslate", VERSION_MATROSKA_ONLY) -DEFINE_MKX_BINARY (KaxChapterTranslateID, 0x69A5, KaxChapterTranslate, "ChapterTranslateID", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxChapterTranslateID, 0x69A5, KaxChapterTranslate, "ChapterTranslateID", libebml::EbmlBinary::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER(KaxChapterTranslateCodec, 0x69BF, KaxChapterTranslate, "ChapterTranslateCodec", VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER(KaxChapterTranslateEditionUID, 0x69FC, KaxChapterTranslate, "ChapterTranslateEditionUID", VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER_DEF(KaxTimestampScale, 0x2AD7B1, KaxInfo, "TimestampScale", VERSION_ALL_MATROSKA, 1000000) @@ -141,7 +141,7 @@ DEFINE_MKX_MASTER(KaxClusterSilentTracks, 0x5854, KaxCluster, false, "ClusterSil DEFINE_MKX_UINTEGER(KaxClusterSilentTrackNumber, 0x58D7, KaxClusterSilentTracks, "ClusterSilentTrackNumber", VERSION_DEPRECATED) DEFINE_MKX_UINTEGER(KaxClusterPosition, 0xA7, KaxCluster, "ClusterPosition", VERSION_WEBM_UP_TO_V4) DEFINE_MKX_UINTEGER(KaxClusterPrevSize, 0xAB, KaxCluster, "ClusterPrevSize", VERSION_ALL_MATROSKA) -DEFINE_MKX_BINARY_CONS(KaxSimpleBlock, 0xA3, KaxCluster, "SimpleBlock", VERSION_SINCE_V2) +DEFINE_MKX_BINARY_CONS(KaxSimpleBlock, 0xA3, KaxCluster, "SimpleBlock", KaxInternalBlock::SizeIsValid, VERSION_SINCE_V2) DEFINE_START_SEMANTIC(KaxBlockGroup) DEFINE_SEMANTIC_ITEM(true, true, KaxBlock) @@ -158,8 +158,8 @@ DEFINE_SEMANTIC_ITEM(false, true, KaxReferenceFrame) DEFINE_END_SEMANTIC(KaxBlockGroup) DEFINE_MKX_MASTER_CONS(KaxBlockGroup, 0xA0, KaxCluster, false, "BlockGroup", VERSION_ALL_MATROSKA) -DEFINE_MKX_BINARY_CONS(KaxBlock, 0xA1, KaxBlockGroup, "Block", VERSION_ALL_MATROSKA) -DEFINE_MKX_BINARY_CONS(KaxBlockVirtual, 0xA2, KaxBlockGroup, "BlockVirtual", VERSION_DEPRECATED) +DEFINE_MKX_BINARY_CONS(KaxBlock, 0xA1, KaxBlockGroup, "Block", KaxInternalBlock::SizeIsValid, VERSION_ALL_MATROSKA) +DEFINE_MKX_BINARY_CONS(KaxBlockVirtual, 0xA2, KaxBlockGroup, "BlockVirtual", KaxInternalBlock::SizeIsValid, VERSION_DEPRECATED) DEFINE_START_SEMANTIC(KaxBlockAdditions) DEFINE_SEMANTIC_ITEM(true, false, KaxBlockMore) @@ -173,13 +173,13 @@ DEFINE_SEMANTIC_ITEM(true, true, KaxBlockAddID) DEFINE_END_SEMANTIC(KaxBlockMore) DEFINE_MKX_MASTER(KaxBlockMore, 0xA6, KaxBlockAdditions, false, "BlockMore", VERSION_ALL_MATROSKA) -DEFINE_MKX_BINARY (KaxBlockAdditional, 0xA5, KaxBlockMore, "BlockAdditional", VERSION_ALL_MATROSKA) +DEFINE_MKX_BINARY (KaxBlockAdditional, 0xA5, KaxBlockMore, "BlockAdditional", libebml::EbmlBinary::SizeIsValid, VERSION_ALL_MATROSKA) DEFINE_MKX_UINTEGER_DEF(KaxBlockAddID, 0xEE, KaxBlockMore, "BlockAddID", VERSION_ALL_MATROSKA, 1) DEFINE_MKX_UINTEGER(KaxBlockDuration, 0x9B, KaxBlockGroup, "BlockDuration", VERSION_ALL_MATROSKA) DEFINE_MKX_UINTEGER_DEF(KaxReferencePriority, 0xFA, KaxBlockGroup, "FlagReferenced", VERSION_MATROSKA_ONLY, 0) DEFINE_MKX_SINTEGER_CONS(KaxReferenceBlock, 0xFB, KaxBlockGroup, "ReferenceBlock", VERSION_ALL_MATROSKA) DEFINE_MKX_SINTEGER(KaxReferenceVirtual, 0xFD, KaxBlockGroup, "ReferenceVirtual", VERSION_DEPRECATED) -DEFINE_MKX_BINARY (KaxCodecState, 0xA4, KaxBlockGroup, "CodecState", VERSION_MATROSKA_SINCE_V2) +DEFINE_MKX_BINARY (KaxCodecState, 0xA4, KaxBlockGroup, "CodecState", libebml::EbmlBinary::SizeIsValid, VERSION_MATROSKA_SINCE_V2) DEFINE_MKX_SINTEGER(KaxDiscardPadding, 0x75A2, KaxBlockGroup, "DiscardPadding", VERSION_WEBM_SINCE_V4) DEFINE_START_SEMANTIC(KaxSlices) @@ -211,7 +211,7 @@ DEFINE_END_SEMANTIC(KaxReferenceFrame) DEFINE_MKX_MASTER(KaxReferenceFrame, 0xC8, KaxBlockGroup, false, "ReferenceFrame", VERSION_DIVX_ONLY) DEFINE_MKX_UINTEGER(KaxReferenceOffset, 0xC9, KaxReferenceFrame, "ReferenceOffset", VERSION_DIVX_ONLY) DEFINE_MKX_UINTEGER(KaxReferenceTimestamp, 0xCA, KaxReferenceFrame, "ReferenceTimestamp", VERSION_DIVX_ONLY) -DEFINE_MKX_BINARY (KaxEncryptedBlock, 0xAF, KaxCluster, "EncryptedBlock", VERSION_DEPRECATED) +DEFINE_MKX_BINARY (KaxEncryptedBlock, 0xAF, KaxCluster, "EncryptedBlock", libebml::EbmlBinary::SizeIsValid, VERSION_DEPRECATED) DEFINE_START_SEMANTIC(KaxTracks) DEFINE_SEMANTIC_ITEM(true, false, KaxTrackEntry) @@ -298,12 +298,12 @@ DEFINE_MKX_MASTER(KaxBlockAdditionMapping, 0x41E4, KaxTrackEntry, false, "BlockA DEFINE_MKX_UINTEGER(KaxBlockAddIDValue, 0x41F0, KaxBlockAdditionMapping, "BlockAddIDValue", VERSION_MATROSKA_SINCE_V4) DEFINE_MKX_STRING(KaxBlockAddIDName, 0x41A4, KaxBlockAdditionMapping, "BlockAddIDName", VERSION_MATROSKA_SINCE_V4) DEFINE_MKX_UINTEGER_DEF(KaxBlockAddIDType, 0x41E7, KaxBlockAdditionMapping, "BlockAddIDType", VERSION_MATROSKA_SINCE_V4, 0) -DEFINE_MKX_BINARY (KaxBlockAddIDExtraData, 0x41ED, KaxBlockAdditionMapping, "BlockAddIDExtraData", VERSION_MATROSKA_SINCE_V4) +DEFINE_MKX_BINARY (KaxBlockAddIDExtraData, 0x41ED, KaxBlockAdditionMapping, "BlockAddIDExtraData", libebml::EbmlBinary::SizeIsValid, VERSION_MATROSKA_SINCE_V4) DEFINE_MKX_UNISTRING(KaxTrackName, 0x536E, KaxTrackEntry, "TrackName", VERSION_ALL_MATROSKA) DEFINE_MKX_STRING_DEF(KaxTrackLanguage, 0x22B59C, KaxTrackEntry, "TrackLanguage", VERSION_ALL_MATROSKA, "eng") DEFINE_MKX_STRING(KaxLanguageIETF, 0x22B59D, KaxTrackEntry, "LanguageIETF", VERSION_MATROSKA_SINCE_V4) DEFINE_MKX_STRING(KaxCodecID, 0x86, KaxTrackEntry, "CodecID", VERSION_ALL_MATROSKA) -DEFINE_MKX_BINARY (KaxCodecPrivate, 0x63A2, KaxTrackEntry, "CodecPrivate", VERSION_ALL_MATROSKA) +DEFINE_MKX_BINARY (KaxCodecPrivate, 0x63A2, KaxTrackEntry, "CodecPrivate", libebml::EbmlBinary::SizeIsValid, VERSION_ALL_MATROSKA) DEFINE_MKX_UNISTRING(KaxCodecName, 0x258688, KaxTrackEntry, "CodecName", VERSION_ALL_MATROSKA) DEFINE_MKX_UINTEGER(KaxTrackAttachmentLink, 0x7446, KaxTrackEntry, "TrackAttachmentLink", VERSION_MATROSKA_UP_TO_V3) DEFINE_MKX_UNISTRING(KaxCodecSettings, 0x3A9697, KaxTrackEntry, "CodecSettings", VERSION_DEPRECATED) @@ -321,7 +321,7 @@ DEFINE_SEMANTIC_ITEM(false, false, KaxTrackTranslateEditionUID) DEFINE_END_SEMANTIC(KaxTrackTranslate) DEFINE_MKX_MASTER(KaxTrackTranslate, 0x6624, KaxTrackEntry, false, "TrackTranslate", VERSION_MATROSKA_ONLY) -DEFINE_MKX_BINARY (KaxTrackTranslateTrackID, 0x66A5, KaxTrackTranslate, "TrackTranslateTrackID", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxTrackTranslateTrackID, 0x66A5, KaxTrackTranslate, "TrackTranslateTrackID", libebml::EbmlBinary::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER(KaxTrackTranslateCodec, 0x66BF, KaxTrackTranslate, "TrackTranslateCodec", VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER(KaxTrackTranslateEditionUID, 0x66FC, KaxTrackTranslate, "TrackTranslateEditionUID", VERSION_MATROSKA_ONLY) @@ -364,7 +364,7 @@ DEFINE_MKX_UINTEGER(KaxVideoDisplayWidth, 0x54B0, KaxTrackVideo, "VideoDisplayWi DEFINE_MKX_UINTEGER(KaxVideoDisplayHeight, 0x54BA, KaxTrackVideo, "VideoDisplayHeight", VERSION_ALL_MATROSKA) DEFINE_MKX_UINTEGER_DEF(KaxVideoDisplayUnit, 0x54B2, KaxTrackVideo, "VideoDisplayUnit", VERSION_ALL_MATROSKA, 0) DEFINE_MKX_UINTEGER_DEF(KaxVideoAspectRatio, 0x54B3, KaxTrackVideo, "VideoAspectRatio", VERSION_DEPRECATED, 0) -DEFINE_MKX_BINARY (KaxVideoColourSpace, 0x2EB524, KaxTrackVideo, "VideoColourSpace", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxVideoColourSpace, 0x2EB524, KaxTrackVideo, "VideoColourSpace", KaxVideoColourSpace::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_MKX_FLOAT(KaxVideoGamma, 0x2FB523, KaxTrackVideo, "VideoGamma", VERSION_DEPRECATED) DEFINE_MKX_FLOAT(KaxVideoFrameRate, 0x2383E3, KaxTrackVideo, "VideoFrameRate", VERSION_DEPRECATED) @@ -435,7 +435,7 @@ DEFINE_END_SEMANTIC(KaxVideoProjection) DEFINE_MKX_MASTER(KaxVideoProjection, 0x7670, KaxTrackVideo, false, "VideoProjection", VERSION_WEBM_SINCE_V4) DEFINE_MKX_UINTEGER_DEF(KaxVideoProjectionType, 0x7671, KaxVideoProjection, "VideoProjectionType", VERSION_WEBM_SINCE_V4, 0) -DEFINE_MKX_BINARY (KaxVideoProjectionPrivate, 0x7672, KaxVideoProjection, "VideoProjectionPrivate", VERSION_WEBM_SINCE_V4) +DEFINE_MKX_BINARY (KaxVideoProjectionPrivate, 0x7672, KaxVideoProjection, "VideoProjectionPrivate", libebml::EbmlBinary::SizeIsValid, VERSION_WEBM_SINCE_V4) DEFINE_MKX_FLOAT_DEF(KaxVideoProjectionPoseYaw, 0x7673, KaxVideoProjection, "VideoProjectionPoseYaw", VERSION_WEBM_SINCE_V4, 0) DEFINE_MKX_FLOAT_DEF(KaxVideoProjectionPosePitch, 0x7674, KaxVideoProjection, "VideoProjectionPosePitch", VERSION_WEBM_SINCE_V4, 0) DEFINE_MKX_FLOAT_DEF(KaxVideoProjectionPoseRoll, 0x7675, KaxVideoProjection, "VideoProjectionPoseRoll", VERSION_WEBM_SINCE_V4, 0) @@ -453,7 +453,7 @@ DEFINE_MKX_MASTER(KaxTrackAudio, 0xE1, KaxTrackEntry, false, "TrackAudio", VERSI DEFINE_MKX_FLOAT_DEF(KaxAudioSamplingFreq, 0xB5, KaxTrackAudio, "AudioSamplingFreq", VERSION_ALL_MATROSKA, 8000) DEFINE_MKX_FLOAT(KaxAudioOutputSamplingFreq, 0x78B5, KaxTrackAudio, "AudioOutputSamplingFreq", VERSION_ALL_MATROSKA) DEFINE_MKX_UINTEGER_DEF(KaxAudioChannels, 0x9F, KaxTrackAudio, "AudioChannels", VERSION_ALL_MATROSKA, 1) -DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, KaxTrackAudio, "AudioPosition", VERSION_DEPRECATED) +DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, KaxTrackAudio, "AudioPosition", libebml::EbmlBinary::SizeIsValid, VERSION_DEPRECATED) DEFINE_MKX_UINTEGER(KaxAudioBitDepth, 0x6264, KaxTrackAudio, "AudioBitDepth", VERSION_ALL_MATROSKA) DEFINE_MKX_UINTEGER_DEF(KaxEmphasis, 0x52F1, KaxTrackAudio, "Emphasis", VERSION_MATROSKA_SINCE_V5, 0) @@ -486,10 +486,10 @@ DEFINE_END_SEMANTIC(KaxTrackJoinBlocks) DEFINE_MKX_MASTER(KaxTrackJoinBlocks, 0xE9, KaxTrackOperation, false, "TrackJoinBlocks", VERSION_MATROSKA_SINCE_V3) DEFINE_MKX_UINTEGER(KaxTrackJoinUID, 0xED, KaxTrackJoinBlocks, "TrackJoinUID", VERSION_MATROSKA_SINCE_V3) DEFINE_MKX_UINTEGER(KaxTrickTrackUID, 0xC0, KaxTrackEntry, "TrickTrackUID", VERSION_DIVX_ONLY) -DEFINE_MKX_BINARY (KaxTrickTrackSegmentUID, 0xC1, KaxTrackEntry, "TrickTrackSegmentUID", VERSION_DIVX_ONLY) +DEFINE_MKX_BINARY (KaxTrickTrackSegmentUID, 0xC1, KaxTrackEntry, "TrickTrackSegmentUID", KaxTrickTrackSegmentUID::SizeIsValid, VERSION_DIVX_ONLY) DEFINE_MKX_UINTEGER_DEF(KaxTrickTrackFlag, 0xC6, KaxTrackEntry, "TrickTrackFlag", VERSION_DIVX_ONLY, 0) DEFINE_MKX_UINTEGER(KaxTrickMasterTrackUID, 0xC7, KaxTrackEntry, "TrickMasterTrackUID", VERSION_DIVX_ONLY) -DEFINE_MKX_BINARY (KaxTrickMasterTrackSegmentUID, 0xC4, KaxTrackEntry, "TrickMasterTrackSegmentUID", VERSION_DIVX_ONLY) +DEFINE_MKX_BINARY (KaxTrickMasterTrackSegmentUID, 0xC4, KaxTrackEntry, "TrickMasterTrackSegmentUID", KaxTrickMasterTrackSegmentUID::SizeIsValid, VERSION_DIVX_ONLY) DEFINE_START_SEMANTIC(KaxContentEncodings) DEFINE_SEMANTIC_ITEM(true, false, KaxContentEncoding) @@ -517,7 +517,7 @@ DEFINE_END_SEMANTIC(KaxContentCompression) DEFINE_MKX_MASTER(KaxContentCompression, 0x5034, KaxContentEncoding, false, "ContentCompression", VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER_DEF(KaxContentCompAlgo, 0x4254, KaxContentCompression, "ContentCompAlgo", VERSION_MATROSKA_ONLY, 0) -DEFINE_MKX_BINARY (KaxContentCompSettings, 0x4255, KaxContentCompression, "ContentCompSettings", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxContentCompSettings, 0x4255, KaxContentCompression, "ContentCompSettings", libebml::EbmlBinary::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_START_SEMANTIC(KaxContentEncryption) DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncAlgo) @@ -531,7 +531,7 @@ DEFINE_END_SEMANTIC(KaxContentEncryption) DEFINE_MKX_MASTER(KaxContentEncryption, 0x5035, KaxContentEncoding, false, "ContentEncryption", VERSION_ALL_MATROSKA) DEFINE_MKX_UINTEGER_DEF(KaxContentEncAlgo, 0x47E1, KaxContentEncryption, "ContentEncAlgo", VERSION_ALL_MATROSKA, 0) -DEFINE_MKX_BINARY (KaxContentEncKeyID, 0x47E2, KaxContentEncryption, "ContentEncKeyID", VERSION_ALL_MATROSKA) +DEFINE_MKX_BINARY (KaxContentEncKeyID, 0x47E2, KaxContentEncryption, "ContentEncKeyID", libebml::EbmlBinary::SizeIsValid, VERSION_ALL_MATROSKA) DEFINE_START_SEMANTIC(KaxContentEncAESSettings) DEFINE_SEMANTIC_ITEM(true, true, KaxAESSettingsCipherMode) @@ -539,8 +539,8 @@ DEFINE_END_SEMANTIC(KaxContentEncAESSettings) DEFINE_MKX_MASTER(KaxContentEncAESSettings, 0x47E7, KaxContentEncryption, false, "ContentEncAESSettings", VERSION_WEBM_SINCE_V4) DEFINE_MKX_UINTEGER(KaxAESSettingsCipherMode, 0x47E8, KaxContentEncAESSettings, "AESSettingsCipherMode", VERSION_WEBM_SINCE_V4) -DEFINE_MKX_BINARY (KaxContentSignature, 0x47E3, KaxContentEncryption, "ContentSignature", VERSION_DEPRECATED) -DEFINE_MKX_BINARY (KaxContentSigKeyID, 0x47E4, KaxContentEncryption, "ContentSigKeyID", VERSION_DEPRECATED) +DEFINE_MKX_BINARY (KaxContentSignature, 0x47E3, KaxContentEncryption, "ContentSignature", libebml::EbmlBinary::SizeIsValid, VERSION_DEPRECATED) +DEFINE_MKX_BINARY (KaxContentSigKeyID, 0x47E4, KaxContentEncryption, "ContentSigKeyID", libebml::EbmlBinary::SizeIsValid, VERSION_DEPRECATED) DEFINE_MKX_UINTEGER_DEF(KaxContentSigAlgo, 0x47E5, KaxContentEncryption, "ContentSigAlgo", VERSION_DEPRECATED, 0) DEFINE_MKX_UINTEGER_DEF(KaxContentSigHashAlgo, 0x47E6, KaxContentEncryption, "ContentSigHashAlgo", VERSION_DEPRECATED, 0) @@ -610,9 +610,9 @@ DEFINE_MKX_MASTER_CONS(KaxAttached, 0x61A7, KaxAttachments, false, "AttachedFile DEFINE_MKX_UNISTRING(KaxFileDescription, 0x467E, KaxAttached, "FileDescription", VERSION_MATROSKA_ONLY) DEFINE_MKX_UNISTRING(KaxFileName, 0x466E, KaxAttached, "FileName", VERSION_MATROSKA_ONLY) DEFINE_MKX_STRING(KaxMimeType, 0x4660, KaxAttached, "FileMimeType", VERSION_MATROSKA_ONLY) -DEFINE_MKX_BINARY (KaxFileData, 0x465C, KaxAttached, "FileData", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxFileData, 0x465C, KaxAttached, "FileData", libebml::EbmlBinary::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER(KaxFileUID, 0x46AE, KaxAttached, "FileUID", VERSION_MATROSKA_ONLY) -DEFINE_MKX_BINARY (KaxFileReferral, 0x4675, KaxAttached, "FileReferral", VERSION_DEPRECATED) +DEFINE_MKX_BINARY (KaxFileReferral, 0x4675, KaxAttached, "FileReferral", libebml::EbmlBinary::SizeIsValid, VERSION_DEPRECATED) DEFINE_MKX_UINTEGER(KaxFileUsedStartTime, 0x4661, KaxAttached, "FileUsedStartTime", VERSION_DIVX_ONLY) DEFINE_MKX_UINTEGER(KaxFileUsedEndTime, 0x4662, KaxAttached, "FileUsedEndTime", VERSION_DIVX_ONLY) @@ -670,7 +670,7 @@ DEFINE_MKX_UINTEGER(KaxChapterTimeStart, 0x91, KaxChapterAtom, "ChapterTimeStart DEFINE_MKX_UINTEGER(KaxChapterTimeEnd, 0x92, KaxChapterAtom, "ChapterTimeEnd", VERSION_ALL_MATROSKA) DEFINE_MKX_UINTEGER_DEF(KaxChapterFlagHidden, 0x98, KaxChapterAtom, "ChapterFlagHidden", VERSION_MATROSKA_ONLY, 0) DEFINE_MKX_UINTEGER_DEF(KaxChapterFlagEnabled, 0x4598, KaxChapterAtom, "ChapterFlagEnabled", VERSION_MATROSKA_ONLY, 1) -DEFINE_MKX_BINARY (KaxChapterSegmentUID, 0x6E67, KaxChapterAtom, "ChapterSegmentUID", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxChapterSegmentUID, 0x6E67, KaxChapterAtom, "ChapterSegmentUID", KaxChapterSegmentUID::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER(KaxChapterSkipType, 0x4588, KaxChapterAtom, "ChapterSkipType", VERSION_MATROSKA_SINCE_V5) DEFINE_MKX_UINTEGER(KaxChapterSegmentEditionUID, 0x6EBC, KaxChapterAtom, "ChapterSegmentEditionUID", VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER(KaxChapterPhysicalEquiv, 0x63C3, KaxChapterAtom, "ChapterPhysicalEquiv", VERSION_MATROSKA_ONLY) @@ -703,7 +703,7 @@ DEFINE_END_SEMANTIC(KaxChapterProcess) DEFINE_MKX_MASTER(KaxChapterProcess, 0x6944, KaxChapterAtom, false, "ChapterProcess", VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER_DEF(KaxChapterProcessCodecID, 0x6955, KaxChapterProcess, "ChapterProcessCodecID", VERSION_MATROSKA_ONLY, 0) -DEFINE_MKX_BINARY (KaxChapterProcessPrivate, 0x450D, KaxChapterProcess, "ChapterProcessPrivate", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxChapterProcessPrivate, 0x450D, KaxChapterProcess, "ChapterProcessPrivate", libebml::EbmlBinary::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_START_SEMANTIC(KaxChapterProcessCommand) DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessTime) @@ -712,7 +712,7 @@ DEFINE_END_SEMANTIC(KaxChapterProcessCommand) DEFINE_MKX_MASTER(KaxChapterProcessCommand, 0x6911, KaxChapterProcess, false, "ChapterProcessCommand", VERSION_MATROSKA_ONLY) DEFINE_MKX_UINTEGER(KaxChapterProcessTime, 0x6922, KaxChapterProcessCommand, "ChapterProcessTime", VERSION_MATROSKA_ONLY) -DEFINE_MKX_BINARY (KaxChapterProcessData, 0x6933, KaxChapterProcessCommand, "ChapterProcessData", VERSION_MATROSKA_ONLY) +DEFINE_MKX_BINARY (KaxChapterProcessData, 0x6933, KaxChapterProcessCommand, "ChapterProcessData", libebml::EbmlBinary::SizeIsValid, VERSION_MATROSKA_ONLY) DEFINE_START_SEMANTIC(KaxTags) DEFINE_SEMANTIC_ITEM(true, false, KaxTag) @@ -762,7 +762,7 @@ DEFINE_MKX_STRING(KaxTagLanguageIETF, 0x447B, KaxTagSimple, "TagLanguageIETF", V DEFINE_MKX_UINTEGER_DEF(KaxTagDefault, 0x4484, KaxTagSimple, "TagDefault", VERSION_ALL_MATROSKA, 1) DEFINE_MKX_UINTEGER_DEF(KaxTagDefaultBogus, 0x44B4, KaxTagSimple, "TagDefaultBogus", VERSION_DEPRECATED, 1) DEFINE_MKX_UNISTRING(KaxTagString, 0x4487, KaxTagSimple, "TagString", VERSION_ALL_MATROSKA) -DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, KaxTagSimple, "TagBinary", VERSION_ALL_MATROSKA) +DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, KaxTagSimple, "TagBinary", libebml::EbmlBinary::SizeIsValid, VERSION_ALL_MATROSKA) libebml::filepos_t KaxClusterSilentTracks::RenderData(libebml::IOCallback & /* output */, bool /* bForceRender */, const ShouldWrite & /* writeFilter */) { assert(false); // no you are not allowed to use this element !