#include "ebml/EbmlString.h"\r
#include "ebml/EbmlBinary.h"\r
#include "ebml/EbmlUInteger.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxAttached : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxAttached)\r
public:\r
- KaxAttached();\r
KaxAttached(const KaxAttached & ElementToClone) : EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxAttached)\r
};\r
\r
-class MATROSKA_DLL_API KaxFileDescription : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxFileDescription)\r
public:\r
- KaxFileDescription() {}\r
KaxFileDescription(const KaxFileDescription & ElementToClone) : EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxFileDescription)\r
};\r
\r
-class MATROSKA_DLL_API KaxFileName : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxFileName)\r
public:\r
- KaxFileName() {}\r
KaxFileName(const KaxFileName & ElementToClone) : EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxFileName)\r
};\r
\r
-class MATROSKA_DLL_API KaxMimeType : public EbmlString {\r
+DECLARE_MKX_STRING(KaxMimeType)\r
public:\r
- KaxMimeType() {}\r
KaxMimeType(const KaxMimeType & ElementToClone) : EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxMimeType)\r
};\r
\r
-class MATROSKA_DLL_API KaxFileData : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxFileData)\r
public:\r
- KaxFileData() {}\r
KaxFileData(const KaxFileData & ElementToClone) :EbmlBinary(ElementToClone){}\r
\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
EBML_CONCRETE_CLASS(KaxFileData)\r
};\r
\r
-class MATROSKA_DLL_API KaxFileReferral : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxFileReferral)\r
public:\r
- KaxFileReferral() {}\r
KaxFileReferral(const KaxFileReferral & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxFileReferral)\r
};\r
\r
-class MATROSKA_DLL_API KaxFileUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxFileUID)\r
public:\r
- KaxFileUID() {}\r
KaxFileUID(const KaxFileUID & ElementToClone) : EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxFileUID)\r
\r
#include "matroska/KaxTypes.h"\r
#include "ebml/EbmlMaster.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxAttachments : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxAttachments)\r
public:\r
- KaxAttachments();\r
KaxAttachments(const KaxAttachments & ElementToClone) : EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxAttachments)\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
- \todo add a PureBlock class to group functionalities between Block and BlockVirtual
- \version \$Id: KaxBlock.h,v 1.24 2004/04/14 23:26:17 robux4 Exp $
- \author Steve Lhomme <robux4 @ users.sf.net>
- \author Julien Coloos <suiryc @ users.sf.net>
-*/
-#ifndef LIBMATROSKA_BLOCK_H
-#define LIBMATROSKA_BLOCK_H
-
-#include <vector>
-
-#include "matroska/KaxTypes.h"
-#include "ebml/EbmlBinary.h"
-#include "ebml/EbmlMaster.h"
-#include "matroska/KaxTracks.h"
-
-using namespace LIBEBML_NAMESPACE;
-
-START_LIBMATROSKA_NAMESPACE
-
-class KaxCluster;
-class KaxReferenceBlock;
-class KaxInternalBlock;
-class KaxBlockBlob;
-
-class MATROSKA_DLL_API DataBuffer {
- protected:
- binary * myBuffer;
- uint32 mySize;
- bool bValidValue;
- bool (*myFreeBuffer)(const DataBuffer & aBuffer); // method to free the internal buffer
-
- public:
- DataBuffer(binary * aBuffer, uint32 aSize, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = NULL)
- :myBuffer(aBuffer)
- ,mySize(aSize)
- ,bValidValue(true)
- ,myFreeBuffer(aFreeBuffer)
- {}
- virtual ~DataBuffer() {}
- virtual binary * Buffer() {return myBuffer;}
- virtual uint32 & Size() {return mySize;};
- virtual const binary * Buffer() const {return myBuffer;}
- virtual const uint32 Size() const {return mySize;};
- bool FreeBuffer(const DataBuffer & aBuffer) {
- bool bResult = true;
- if (myBuffer != NULL && myFreeBuffer != NULL && bValidValue) {
- bResult = myFreeBuffer(aBuffer);
- myBuffer = NULL;
- bValidValue = false;
- }
- return bResult;
- }
-
- virtual DataBuffer * Clone();
-};
-
-class MATROSKA_DLL_API SimpleDataBuffer : public DataBuffer {
- public:
- SimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = myFreeBuffer)
- :DataBuffer(aBuffer + aOffset, aSize, aFreeBuffer)
- ,Offset(aOffset)
- ,BaseBuffer(aBuffer)
- {}
- virtual ~SimpleDataBuffer() {}
-
- DataBuffer * Clone() {return new SimpleDataBuffer(*this);}
-
- protected:
- uint32 Offset;
- binary * BaseBuffer;
-
- static bool myFreeBuffer(const DataBuffer & aBuffer)
- {
- binary *_Buffer = static_cast<const SimpleDataBuffer*>(&aBuffer)->BaseBuffer;
- if (_Buffer != NULL)
- free(_Buffer);
- return true;
- }
-
- SimpleDataBuffer(const SimpleDataBuffer & ToClone);
-};
-
-/*!
- \note the data is copied locally, it can be freed right away
-* /
-class MATROSKA_DLL_API NotSoSimpleDataBuffer : public SimpleDataBuffer {
- public:
- NotSoSimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset)
- :SimpleDataBuffer(new binary[aSize - aOffset], aSize, 0)
- {
- memcpy(BaseBuffer, aBuffer + aOffset, aSize - aOffset);
- }
-};
-*/
-
-class MATROSKA_DLL_API KaxBlockGroup : public EbmlMaster {
- public:
- KaxBlockGroup();
- KaxBlockGroup(const KaxBlockGroup & ElementToClone) :EbmlMaster(ElementToClone) {}
-
- ~KaxBlockGroup();
-
- /*!
- \brief Addition of a frame without references
- */
- bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO);
- /*!
- \brief Addition of a frame with a backward reference (P frame)
- */
- bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO);
-
- /*!
- \brief Addition of a frame with a backward+forward reference (B frame)
- */
- bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO);
- bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockBlob * PastBlock, const KaxBlockBlob * ForwBlock, LacingType lacing = LACING_AUTO);
-
- void SetParent(KaxCluster & aParentCluster);
-
- void SetParentTrack(const KaxTrackEntry & aParentTrack) {
- ParentTrack = &aParentTrack;
- }
-
- /*!
- \brief Set the duration of the contained frame(s) (for the total number of frames)
- */
- void SetBlockDuration(uint64 TimeLength);
- bool GetBlockDuration(uint64 &TheTimecode) const;
-
- /*!
- \return the global timecode of this Block (not just the delta to the Cluster)
- */
- uint64 GlobalTimecode() const;
- uint64 GlobalTimecodeScale() const {
- assert(ParentTrack != NULL);
- return ParentTrack->GlobalTimecodeScale();
- }
-
- uint16 TrackNumber() const;
-
- uint64 ClusterPosition() const;
-
- /*!
- \return the number of references to other frames
- */
- unsigned int ReferenceCount() const;
- const KaxReferenceBlock & Reference(unsigned int Index) const;
-
- /*!
- \brief release all the frames of all Blocks
- */
- void ReleaseFrames();
-
- operator KaxInternalBlock &();
-
- const KaxCluster *GetParentCluster() const { return ParentCluster; }
-
- protected:
- KaxCluster * ParentCluster;
- const KaxTrackEntry * ParentTrack;
-
- EBML_CONCRETE_CLASS(KaxBlockGroup)
-};
-
-class KaxInternalBlock : public EbmlBinary {
- public:
- KaxInternalBlock( bool bSimple ) :bLocalTimecodeUsed(false), mLacing(LACING_AUTO), mInvisible(false)
- ,ParentCluster(NULL), bIsSimple(bSimple), bIsKeyframe(true), bIsDiscardable(false)
- {}
- KaxInternalBlock(const KaxInternalBlock & ElementToClone);
- ~KaxInternalBlock();
- bool ValidateSize() const;
-
- uint16 TrackNum() const {return TrackNumber;}
- /*!
- \todo !!!! This method needs to be changes !
- */
- uint64 GlobalTimecode() const {return Timecode;}
-
- /*!
- \note override this function to generate the Data/Size on the fly, unlike the usual binary elements
- */
- filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
- filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA);
-
- /*!
- \brief Only read the head of the Block (not internal data)
- \note convenient when you are parsing the file quickly
- */
- uint64 ReadInternalHead(IOCallback & input);
-
- unsigned int NumberFrames() const { return SizeList.size();}
- DataBuffer & GetBuffer(unsigned int iIndex) {return *myBuffers[iIndex];}
-
- bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, bool invisible = false);
-
- /*!
- \brief release all the frames of all Blocks
- */
- void ReleaseFrames();
-
- void SetParent(KaxCluster & aParentCluster);
-
- /*!
- \return Returns the lacing type that produces the smallest footprint.
- */
- LacingType GetBestLacingType() const;
-
- /*!
- \param FrameNumber 0 for the first frame
- \return the position in the stream for a given frame
- \note return -1 if the position doesn't exist
- */
- int64 GetDataPosition(size_t FrameNumber = 0);
-
- /*!
- \param FrameNumber 0 for the first frame
- \return the size of a given frame
- \note return -1 if the position doesn't exist
- */
- int64 GetFrameSize(size_t FrameNumber = 0);
-
- bool IsInvisible() const { return mInvisible; }
-
- uint64 ClusterPosition() const;
-
- protected:
- std::vector<DataBuffer *> myBuffers;
- std::vector<int32> SizeList;
- uint64 Timecode; // temporary timecode of the first frame, non scaled
- int16 LocalTimecode;
- bool bLocalTimecodeUsed;
- uint16 TrackNumber;
- LacingType mLacing;
- bool mInvisible;
- uint64 FirstFrameLocation;
-
- filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault = false);
-
- KaxCluster * ParentCluster;
- bool bIsSimple;
- bool bIsKeyframe;
- bool bIsDiscardable;
-};
-
-class MATROSKA_DLL_API KaxBlock : public KaxInternalBlock {
- public:
- KaxBlock() :KaxInternalBlock(false) {}
-
- EBML_CONCRETE_CLASS(KaxBlock)
-};
-
-#if MATROSKA_VERSION >= 2
-class MATROSKA_DLL_API KaxSimpleBlock : public KaxInternalBlock {
- public:
- KaxSimpleBlock() :KaxInternalBlock(true) {}
-
- void SetKeyframe(bool b_keyframe) { bIsKeyframe = b_keyframe; }
- void SetDiscardable(bool b_discard) { bIsDiscardable = b_discard; }
-
- bool IsKeyframe() const { return bIsKeyframe; }
- bool IsDiscardable() const { return bIsDiscardable; }
-
- operator KaxInternalBlock &() { return *this; }
-
- EBML_CONCRETE_CLASS(KaxSimpleBlock)
-};
-#endif // MATROSKA_VERSION
-
-class MATROSKA_DLL_API KaxBlockBlob {
-public:
- KaxBlockBlob(BlockBlobType sblock_mode) :ParentCluster(NULL), SimpleBlockMode(sblock_mode) {
- bUseSimpleBlock = (sblock_mode != BLOCK_BLOB_NO_SIMPLE);
- Block.group = NULL;
- }
-
- ~KaxBlockBlob() {
-#if MATROSKA_VERSION >= 2
- if (bUseSimpleBlock)
- delete Block.simpleblock;
- else
-#endif // MATROSKA_VERSION
- delete Block.group;
- }
-
- operator KaxBlockGroup &();
- operator const KaxBlockGroup &() const;
-#if MATROSKA_VERSION >= 2
- operator KaxSimpleBlock &();
-#endif
- operator KaxInternalBlock &();
- operator const KaxInternalBlock &() const;
-
- void SetBlockGroup( KaxBlockGroup &BlockRef );
-
- void SetBlockDuration(uint64 TimeLength);
-
- void SetParent(KaxCluster & aParentCluster);
- bool AddFrameAuto(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, const KaxBlockBlob * PastBlock = NULL, const KaxBlockBlob * ForwBlock = NULL);
-
- bool IsSimpleBlock() const {return bUseSimpleBlock;}
-
- bool ReplaceSimpleByGroup();
-protected:
- KaxCluster * ParentCluster;
- union {
- KaxBlockGroup *group;
-#if MATROSKA_VERSION >= 2
- KaxSimpleBlock *simpleblock;
-#endif // MATROSKA_VERSION
- } Block;
- bool bUseSimpleBlock;
- BlockBlobType SimpleBlockMode;
-};
-
-class MATROSKA_DLL_API KaxBlockDuration : public EbmlUInteger {
- public:
- KaxBlockDuration() {}
- KaxBlockDuration(const KaxBlockDuration & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxBlockDuration)
-};
-
-#if MATROSKA_VERSION >= 2
-class MATROSKA_DLL_API KaxBlockVirtual : public EbmlBinary {
- public:
- KaxBlockVirtual() :ParentCluster(NULL) {SetBuffer(DataBlock,sizeof(DataBlock)); SetValueIsSet(false);}
- KaxBlockVirtual(const KaxBlockVirtual & ElementToClone);
- ~KaxBlockVirtual();
- bool ValidateSize() const {return true;}
-
- /*!
- \note override this function to generate the Data/Size on the fly, unlike the usual binary elements
- */
- filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
-
- void SetParent(const KaxCluster & aParentCluster) {ParentCluster = &aParentCluster;}
-
- protected:
- uint64 Timecode; // temporary timecode of the first frame if there are more than one
- uint16 TrackNumber;
- binary DataBlock[5];
-
- const KaxCluster * ParentCluster;
-
- EBML_CONCRETE_CLASS(KaxBlockVirtual)
-};
-#endif // MATROSKA_VERSION
-
-class MATROSKA_DLL_API KaxBlockAdditional : public EbmlBinary {
- public:
- KaxBlockAdditional() {}
- KaxBlockAdditional(const KaxBlockAdditional & ElementToClone) :EbmlBinary(ElementToClone){}
- bool ValidateSize() const {return true;}
-
- EBML_CONCRETE_CLASS(KaxBlockAdditional)
-};
-
-class MATROSKA_DLL_API KaxBlockAdditions : public EbmlMaster {
- public:
- KaxBlockAdditions();
- KaxBlockAdditions(const KaxBlockAdditions & ElementToClone) :EbmlMaster(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxBlockAdditions)
-};
-
-class MATROSKA_DLL_API KaxBlockMore : public EbmlMaster {
- public:
- KaxBlockMore();
- KaxBlockMore(const KaxBlockMore & ElementToClone) :EbmlMaster(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxBlockMore)
-};
-
-class MATROSKA_DLL_API KaxBlockAddID : public EbmlUInteger {
- public:
- KaxBlockAddID() :EbmlUInteger(1) {}
- KaxBlockAddID(const KaxBlockAddID & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxBlockAddID)
-};
-
-class MATROSKA_DLL_API KaxCodecState : public EbmlBinary {
- public:
- KaxCodecState() {}
- KaxCodecState(const KaxCodecState & ElementToClone) :EbmlBinary(ElementToClone){}
-
- bool ValidateSize() const {return true;}
-
- EBML_CONCRETE_CLASS(KaxCodecState)
-};
-
-END_LIBMATROSKA_NAMESPACE
-
-#endif // LIBMATROSKA_BLOCK_H
+/****************************************************************************\r
+** libmatroska : parse Matroska files, see http://www.matroska.org/\r
+**\r
+** <file/class description>\r
+**\r
+** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.\r
+**\r
+** This library is free software; you can redistribute it and/or\r
+** modify it under the terms of the GNU Lesser General Public\r
+** License as published by the Free Software Foundation; either\r
+** version 2.1 of the License, or (at your option) any later version.\r
+** \r
+** This library is distributed in the hope that it will be useful,\r
+** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+** Lesser General Public License for more details.\r
+** \r
+** You should have received a copy of the GNU Lesser General Public\r
+** License along with this library; if not, write to the Free Software\r
+** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+**\r
+** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**\r
+** Contact license@matroska.org if any conditions of this licensing are\r
+** not clear to you.\r
+**\r
+**********************************************************************/\r
+\r
+/*!\r
+ \file\r
+ \todo add a PureBlock class to group functionalities between Block and BlockVirtual\r
+ \version \$Id: KaxBlock.h,v 1.24 2004/04/14 23:26:17 robux4 Exp $\r
+ \author Steve Lhomme <robux4 @ users.sf.net>\r
+ \author Julien Coloos <suiryc @ users.sf.net>\r
+*/\r
+#ifndef LIBMATROSKA_BLOCK_H\r
+#define LIBMATROSKA_BLOCK_H\r
+\r
+#include <vector>\r
+\r
+#include "matroska/KaxTypes.h"\r
+#include "ebml/EbmlBinary.h"\r
+#include "ebml/EbmlMaster.h"\r
+#include "matroska/KaxTracks.h"\r
+#include "matroska/KaxDefines.h"\r
+\r
+using namespace LIBEBML_NAMESPACE;\r
+\r
+START_LIBMATROSKA_NAMESPACE\r
+\r
+class KaxCluster;\r
+class KaxReferenceBlock;\r
+class KaxInternalBlock;\r
+class KaxBlockBlob;\r
+\r
+class MATROSKA_DLL_API DataBuffer {\r
+ protected:\r
+ binary * myBuffer;\r
+ uint32 mySize;\r
+ bool bValidValue;\r
+ bool (*myFreeBuffer)(const DataBuffer & aBuffer); // method to free the internal buffer\r
+\r
+ public:\r
+ DataBuffer(binary * aBuffer, uint32 aSize, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = NULL)\r
+ :myBuffer(aBuffer)\r
+ ,mySize(aSize)\r
+ ,bValidValue(true) \r
+ ,myFreeBuffer(aFreeBuffer)\r
+ {}\r
+ virtual ~DataBuffer() {}\r
+ virtual binary * Buffer() {return myBuffer;}\r
+ virtual uint32 & Size() {return mySize;};\r
+ virtual const binary * Buffer() const {return myBuffer;}\r
+ virtual const uint32 Size() const {return mySize;};\r
+ bool FreeBuffer(const DataBuffer & aBuffer) {\r
+ bool bResult = true;\r
+ if (myBuffer != NULL && myFreeBuffer != NULL && bValidValue) {\r
+ bResult = myFreeBuffer(aBuffer);\r
+ myBuffer = NULL;\r
+ bValidValue = false;\r
+ }\r
+ return bResult;\r
+ }\r
+\r
+ virtual DataBuffer * Clone();\r
+};\r
+\r
+class MATROSKA_DLL_API SimpleDataBuffer : public DataBuffer {\r
+ public:\r
+ SimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = myFreeBuffer)\r
+ :DataBuffer(aBuffer + aOffset, aSize, aFreeBuffer)\r
+ ,Offset(aOffset)\r
+ ,BaseBuffer(aBuffer)\r
+ {}\r
+ virtual ~SimpleDataBuffer() {}\r
+\r
+ DataBuffer * Clone() {return new SimpleDataBuffer(*this);}\r
+\r
+ protected:\r
+ uint32 Offset;\r
+ binary * BaseBuffer;\r
+\r
+ static bool myFreeBuffer(const DataBuffer & aBuffer)\r
+ {\r
+ binary *_Buffer = static_cast<const SimpleDataBuffer*>(&aBuffer)->BaseBuffer;\r
+ if (_Buffer != NULL)\r
+ free(_Buffer);\r
+ return true;\r
+ }\r
+\r
+ SimpleDataBuffer(const SimpleDataBuffer & ToClone);\r
+};\r
+\r
+/*!\r
+ \note the data is copied locally, it can be freed right away\r
+* /\r
+class MATROSKA_DLL_API NotSoSimpleDataBuffer : public SimpleDataBuffer {\r
+ public:\r
+ NotSoSimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset)\r
+ :SimpleDataBuffer(new binary[aSize - aOffset], aSize, 0)\r
+ {\r
+ memcpy(BaseBuffer, aBuffer + aOffset, aSize - aOffset);\r
+ }\r
+};\r
+*/\r
+\r
+DECLARE_MKX_MASTER(KaxBlockGroup)\r
+ public:\r
+ KaxBlockGroup(const KaxBlockGroup & ElementToClone) :EbmlMaster(ElementToClone) {}\r
+\r
+ ~KaxBlockGroup();\r
+\r
+ /*!\r
+ \brief Addition of a frame without references\r
+ */\r
+ bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO);\r
+ /*!\r
+ \brief Addition of a frame with a backward reference (P frame)\r
+ */\r
+ bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO);\r
+\r
+ /*!\r
+ \brief Addition of a frame with a backward+forward reference (B frame)\r
+ */\r
+ bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO);\r
+ bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockBlob * PastBlock, const KaxBlockBlob * ForwBlock, LacingType lacing = LACING_AUTO);\r
+\r
+ void SetParent(KaxCluster & aParentCluster);\r
+\r
+ void SetParentTrack(const KaxTrackEntry & aParentTrack) {\r
+ ParentTrack = &aParentTrack;\r
+ }\r
+\r
+ /*!\r
+ \brief Set the duration of the contained frame(s) (for the total number of frames)\r
+ */\r
+ void SetBlockDuration(uint64 TimeLength);\r
+ bool GetBlockDuration(uint64 &TheTimecode) const;\r
+\r
+ /*!\r
+ \return the global timecode of this Block (not just the delta to the Cluster)\r
+ */\r
+ uint64 GlobalTimecode() const;\r
+ uint64 GlobalTimecodeScale() const {\r
+ assert(ParentTrack != NULL);\r
+ return ParentTrack->GlobalTimecodeScale();\r
+ }\r
+\r
+ uint16 TrackNumber() const;\r
+\r
+ uint64 ClusterPosition() const;\r
+ \r
+ /*!\r
+ \return the number of references to other frames\r
+ */\r
+ unsigned int ReferenceCount() const;\r
+ const KaxReferenceBlock & Reference(unsigned int Index) const;\r
+\r
+ /*!\r
+ \brief release all the frames of all Blocks\r
+ */\r
+ void ReleaseFrames();\r
+\r
+ operator KaxInternalBlock &();\r
+\r
+ const KaxCluster *GetParentCluster() const { return ParentCluster; }\r
+\r
+ protected:\r
+ KaxCluster * ParentCluster;\r
+ const KaxTrackEntry * ParentTrack;\r
+ \r
+ EBML_CONCRETE_CLASS(KaxBlockGroup)\r
+};\r
+\r
+class KaxInternalBlock : public EbmlBinary {\r
+ public:\r
+ KaxInternalBlock( bool bSimple ) :bLocalTimecodeUsed(false), mLacing(LACING_AUTO), mInvisible(false)\r
+ ,ParentCluster(NULL), bIsSimple(bSimple), bIsKeyframe(true), bIsDiscardable(false)\r
+ {}\r
+ KaxInternalBlock(const KaxInternalBlock & ElementToClone);\r
+ ~KaxInternalBlock();\r
+ bool ValidateSize() const;\r
+\r
+ uint16 TrackNum() const {return TrackNumber;}\r
+ /*!\r
+ \todo !!!! This method needs to be changes !\r
+ */\r
+ uint64 GlobalTimecode() const {return Timecode;}\r
+\r
+ /*!\r
+ \note override this function to generate the Data/Size on the fly, unlike the usual binary elements\r
+ */\r
+ filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false);\r
+ filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA);\r
+ \r
+ /*!\r
+ \brief Only read the head of the Block (not internal data)\r
+ \note convenient when you are parsing the file quickly\r
+ */\r
+ uint64 ReadInternalHead(IOCallback & input);\r
+ \r
+ unsigned int NumberFrames() const { return SizeList.size();}\r
+ DataBuffer & GetBuffer(unsigned int iIndex) {return *myBuffers[iIndex];}\r
+\r
+ bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, bool invisible = false);\r
+\r
+ /*!\r
+ \brief release all the frames of all Blocks\r
+ */\r
+ void ReleaseFrames();\r
+\r
+ void SetParent(KaxCluster & aParentCluster);\r
+\r
+ /*!\r
+ \return Returns the lacing type that produces the smallest footprint.\r
+ */\r
+ LacingType GetBestLacingType() const;\r
+\r
+ /*!\r
+ \param FrameNumber 0 for the first frame\r
+ \return the position in the stream for a given frame\r
+ \note return -1 if the position doesn't exist\r
+ */\r
+ int64 GetDataPosition(size_t FrameNumber = 0);\r
+\r
+ /*!\r
+ \param FrameNumber 0 for the first frame\r
+ \return the size of a given frame\r
+ \note return -1 if the position doesn't exist\r
+ */\r
+ int64 GetFrameSize(size_t FrameNumber = 0);\r
+ \r
+ bool IsInvisible() const { return mInvisible; }\r
+\r
+ uint64 ClusterPosition() const;\r
+\r
+ protected:\r
+ std::vector<DataBuffer *> myBuffers;\r
+ std::vector<int32> SizeList;\r
+ uint64 Timecode; // temporary timecode of the first frame, non scaled\r
+ int16 LocalTimecode;\r
+ bool bLocalTimecodeUsed;\r
+ uint16 TrackNumber;\r
+ LacingType mLacing;\r
+ bool mInvisible;\r
+ uint64 FirstFrameLocation;\r
+\r
+ filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault = false);\r
+\r
+ KaxCluster * ParentCluster;\r
+ bool bIsSimple;\r
+ bool bIsKeyframe;\r
+ bool bIsDiscardable;\r
+};\r
+\r
+DECLARE_MKX_CONTEXT(KaxBlock);\r
+class MATROSKA_DLL_API KaxBlock : public KaxInternalBlock {\r
+ public:\r
+ KaxBlock() :KaxInternalBlock(false) {}\r
+ \r
+ EBML_CONCRETE_CLASS(KaxBlock)\r
+};\r
+\r
+#if MATROSKA_VERSION >= 2\r
+DECLARE_MKX_CONTEXT(KaxSimpleBlock);\r
+class MATROSKA_DLL_API KaxSimpleBlock : public KaxInternalBlock {\r
+ public:\r
+ KaxSimpleBlock() :KaxInternalBlock(true) {}\r
+\r
+ void SetKeyframe(bool b_keyframe) { bIsKeyframe = b_keyframe; }\r
+ void SetDiscardable(bool b_discard) { bIsDiscardable = b_discard; }\r
+\r
+ bool IsKeyframe() const { return bIsKeyframe; }\r
+ bool IsDiscardable() const { return bIsDiscardable; }\r
+\r
+ operator KaxInternalBlock &() { return *this; }\r
+ \r
+ EBML_CONCRETE_CLASS(KaxSimpleBlock)\r
+};\r
+#endif // MATROSKA_VERSION\r
+\r
+class MATROSKA_DLL_API KaxBlockBlob {\r
+public:\r
+ KaxBlockBlob(BlockBlobType sblock_mode) :ParentCluster(NULL), SimpleBlockMode(sblock_mode) {\r
+ bUseSimpleBlock = (sblock_mode != BLOCK_BLOB_NO_SIMPLE);\r
+ Block.group = NULL;\r
+ }\r
+\r
+ ~KaxBlockBlob() {\r
+#if MATROSKA_VERSION >= 2\r
+ if (bUseSimpleBlock)\r
+ delete Block.simpleblock;\r
+ else\r
+#endif // MATROSKA_VERSION\r
+ delete Block.group;\r
+ }\r
+\r
+ operator KaxBlockGroup &();\r
+ operator const KaxBlockGroup &() const;\r
+#if MATROSKA_VERSION >= 2\r
+ operator KaxSimpleBlock &();\r
+#endif\r
+ operator KaxInternalBlock &();\r
+ operator const KaxInternalBlock &() const;\r
+\r
+ void SetBlockGroup( KaxBlockGroup &BlockRef );\r
+\r
+ void SetBlockDuration(uint64 TimeLength);\r
+\r
+ void SetParent(KaxCluster & aParentCluster);\r
+ bool AddFrameAuto(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, const KaxBlockBlob * PastBlock = NULL, const KaxBlockBlob * ForwBlock = NULL);\r
+\r
+ bool IsSimpleBlock() const {return bUseSimpleBlock;}\r
+\r
+ bool ReplaceSimpleByGroup();\r
+protected:\r
+ KaxCluster * ParentCluster;\r
+ union {\r
+ KaxBlockGroup *group;\r
+#if MATROSKA_VERSION >= 2\r
+ KaxSimpleBlock *simpleblock;\r
+#endif // MATROSKA_VERSION\r
+ } Block;\r
+ bool bUseSimpleBlock;\r
+ BlockBlobType SimpleBlockMode;\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxBlockDuration)\r
+ public:\r
+ KaxBlockDuration(const KaxBlockDuration & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+ \r
+ EBML_CONCRETE_CLASS(KaxBlockDuration)\r
+};\r
+\r
+#if MATROSKA_VERSION >= 2\r
+DECLARE_MKX_BINARY_CONS(KaxBlockVirtual)\r
+ public:\r
+ KaxBlockVirtual() :ParentCluster(NULL) {SetBuffer(DataBlock,sizeof(DataBlock)); SetValueIsSet(false);}\r
+ KaxBlockVirtual(const KaxBlockVirtual & ElementToClone);\r
+ ~KaxBlockVirtual();\r
+ bool ValidateSize() const {return true;}\r
+\r
+ /*!\r
+ \note override this function to generate the Data/Size on the fly, unlike the usual binary elements\r
+ */\r
+ filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false);\r
+\r
+ void SetParent(const KaxCluster & aParentCluster) {ParentCluster = &aParentCluster;}\r
+\r
+ protected:\r
+ uint64 Timecode; // temporary timecode of the first frame if there are more than one\r
+ uint16 TrackNumber;\r
+ binary DataBlock[5];\r
+\r
+ const KaxCluster * ParentCluster;\r
+ \r
+ EBML_CONCRETE_CLASS(KaxBlockVirtual)\r
+};\r
+#endif // MATROSKA_VERSION\r
+\r
+DECLARE_MKX_BINARY(KaxBlockAdditional)\r
+ public:\r
+ KaxBlockAdditional(const KaxBlockAdditional & ElementToClone) :EbmlBinary(ElementToClone){}\r
+ bool ValidateSize() const {return true;}\r
+\r
+ EBML_CONCRETE_CLASS(KaxBlockAdditional)\r
+};\r
+\r
+DECLARE_MKX_MASTER(KaxBlockAdditions)\r
+ public:\r
+ KaxBlockAdditions(const KaxBlockAdditions & ElementToClone) :EbmlMaster(ElementToClone) {}\r
+ \r
+ EBML_CONCRETE_CLASS(KaxBlockAdditions)\r
+};\r
+\r
+DECLARE_MKX_MASTER(KaxBlockMore)\r
+ public:\r
+ KaxBlockMore(const KaxBlockMore & ElementToClone) :EbmlMaster(ElementToClone) {}\r
+ \r
+ EBML_CONCRETE_CLASS(KaxBlockMore)\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxBlockAddID)\r
+ public:\r
+ KaxBlockAddID(const KaxBlockAddID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+ \r
+ EBML_CONCRETE_CLASS(KaxBlockAddID)\r
+};\r
+\r
+DECLARE_MKX_BINARY(KaxCodecState)\r
+ public:\r
+ KaxCodecState(const KaxCodecState & ElementToClone) :EbmlBinary(ElementToClone){}\r
+\r
+ bool ValidateSize() const {return true;}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCodecState)\r
+};\r
+\r
+END_LIBMATROSKA_NAMESPACE\r
+\r
+#endif // LIBMATROSKA_BLOCK_H\r
#include "ebml/EbmlMaster.h"\r
#include "ebml/EbmlUInteger.h"\r
#include "ebml/EbmlSInteger.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
class KaxBlockGroup;\r
class KaxBlockBlob;\r
\r
-class MATROSKA_DLL_API KaxReferencePriority : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxReferencePriority)\r
public:\r
- KaxReferencePriority() :EbmlUInteger(0) {}\r
KaxReferencePriority(const KaxReferencePriority & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxReferencePriority)\r
/*!\r
\brief element used for B frame-likes\r
*/\r
-class MATROSKA_DLL_API KaxReferenceBlock : public EbmlSInteger {\r
+DECLARE_MKX_SINTEGER_CONS(KaxReferenceBlock)\r
public:\r
KaxReferenceBlock() :RefdBlock(NULL), ParentBlock(NULL) {bTimecodeSet = false;}\r
KaxReferenceBlock(const KaxReferenceBlock & ElementToClone) :EbmlSInteger(ElementToClone), bTimecodeSet(ElementToClone.bTimecodeSet) {}\r
};\r
\r
#if MATROSKA_VERSION >= 2\r
-class MATROSKA_DLL_API KaxReferenceVirtual : public EbmlSInteger {\r
+DECLARE_MKX_SINTEGER(KaxReferenceVirtual)\r
public:\r
- KaxReferenceVirtual() {}\r
KaxReferenceVirtual(const KaxReferenceVirtual & ElementToClone) :EbmlSInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxReferenceVirtual)\r
};\r
#endif // MATROSKA_VERSION\r
\r
-class MATROSKA_DLL_API KaxTimeSlice : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTimeSlice)\r
public:\r
- KaxTimeSlice();\r
KaxTimeSlice(const KaxTimeSlice & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTimeSlice)\r
};\r
\r
-class MATROSKA_DLL_API KaxSlices : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxSlices)\r
public:\r
- KaxSlices();\r
KaxSlices(const KaxSlices & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxSlices)\r
};\r
\r
-class MATROSKA_DLL_API KaxSliceLaceNumber : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxSliceLaceNumber)\r
public:\r
- KaxSliceLaceNumber() :EbmlUInteger(0) {}\r
KaxSliceLaceNumber(const KaxSliceLaceNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxSliceLaceNumber)\r
};\r
\r
-class MATROSKA_DLL_API KaxSliceFrameNumber : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxSliceFrameNumber)\r
public:\r
- KaxSliceFrameNumber() :EbmlUInteger(0) {}\r
KaxSliceFrameNumber(const KaxSliceFrameNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxSliceFrameNumber)\r
};\r
\r
-class MATROSKA_DLL_API KaxSliceBlockAddID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxSliceBlockAddID)\r
public:\r
- KaxSliceBlockAddID() :EbmlUInteger(0) {}\r
KaxSliceBlockAddID(const KaxSliceBlockAddID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxSliceBlockAddID)\r
};\r
\r
-class MATROSKA_DLL_API KaxSliceDelay : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxSliceDelay)\r
public:\r
- KaxSliceDelay() :EbmlUInteger(0) {}\r
KaxSliceDelay(const KaxSliceDelay & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxSliceDelay)\r
};\r
\r
-class MATROSKA_DLL_API KaxSliceDuration : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxSliceDuration)\r
public:\r
- KaxSliceDuration() {}\r
KaxSliceDuration(const KaxSliceDuration & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxSliceDuration)\r
#include "ebml/EbmlUnicodeString.h"\r
#include "ebml/EbmlString.h"\r
#include "ebml/EbmlBinary.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxChapters : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxChapters)\r
public:\r
- KaxChapters();\r
KaxChapters(const KaxChapters & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapters)\r
};\r
\r
-class MATROSKA_DLL_API KaxEditionEntry : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxEditionEntry)\r
public:\r
- KaxEditionEntry();\r
KaxEditionEntry(const KaxEditionEntry & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxEditionEntry)\r
};\r
\r
-class MATROSKA_DLL_API KaxEditionUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxEditionUID)\r
public:\r
- KaxEditionUID() {}\r
KaxEditionUID(const KaxEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxEditionUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxEditionFlagHidden : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxEditionFlagHidden)\r
public:\r
- KaxEditionFlagHidden(): EbmlUInteger(0) {}\r
KaxEditionFlagHidden(const KaxEditionFlagHidden & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxEditionFlagHidden)\r
};\r
\r
-class MATROSKA_DLL_API KaxEditionFlagDefault : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxEditionFlagDefault)\r
public:\r
- KaxEditionFlagDefault(): EbmlUInteger(0) {}\r
KaxEditionFlagDefault(const KaxEditionFlagDefault & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxEditionFlagDefault)\r
};\r
\r
-class MATROSKA_DLL_API KaxEditionFlagOrdered : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxEditionFlagOrdered)\r
public:\r
- KaxEditionFlagOrdered(): EbmlUInteger(0) {}\r
KaxEditionFlagOrdered(const KaxEditionFlagOrdered & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxEditionFlagOrdered)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterAtom : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxChapterAtom)\r
public:\r
- KaxChapterAtom();\r
KaxChapterAtom(const KaxChapterAtom & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterAtom)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterUID)\r
public:\r
- KaxChapterUID() {}\r
KaxChapterUID(const KaxChapterUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterTimeStart : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterTimeStart)\r
public:\r
- KaxChapterTimeStart() {}\r
KaxChapterTimeStart(const KaxChapterTimeStart & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterTimeStart)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterTimeEnd : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterTimeEnd)\r
public:\r
- KaxChapterTimeEnd() {}\r
KaxChapterTimeEnd(const KaxChapterTimeEnd & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterTimeEnd)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterFlagHidden : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterFlagHidden)\r
public:\r
- KaxChapterFlagHidden(): EbmlUInteger(0) {}\r
KaxChapterFlagHidden(const KaxChapterFlagHidden & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterFlagHidden)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterFlagEnabled : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterFlagEnabled)\r
public:\r
- KaxChapterFlagEnabled(): EbmlUInteger(1) {}\r
KaxChapterFlagEnabled(const KaxChapterFlagEnabled & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterFlagEnabled)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterSegmentUID : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxChapterSegmentUID)\r
public:\r
- KaxChapterSegmentUID() {}\r
KaxChapterSegmentUID(const KaxChapterSegmentUID & ElementToClone) :EbmlBinary(ElementToClone) {}\r
bool ValidateSize() const { return (GetSize() == 16);}\r
\r
EBML_CONCRETE_CLASS(KaxChapterSegmentUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterSegmentEditionUID : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxChapterSegmentEditionUID)\r
public:\r
- KaxChapterSegmentEditionUID() {}\r
KaxChapterSegmentEditionUID(const KaxChapterSegmentEditionUID & ElementToClone) :EbmlBinary(ElementToClone) {}\r
bool ValidateSize() const { return (GetSize() == 16);}\r
\r
EBML_CONCRETE_CLASS(KaxChapterSegmentEditionUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterPhysicalEquiv : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterPhysicalEquiv)\r
public:\r
- KaxChapterPhysicalEquiv(): EbmlUInteger() {}\r
KaxChapterPhysicalEquiv(const KaxChapterPhysicalEquiv & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterPhysicalEquiv)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterTrack : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxChapterTrack)\r
public:\r
- KaxChapterTrack();\r
KaxChapterTrack(const KaxChapterTrack & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterTrack)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterTrackNumber : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterTrackNumber)\r
public:\r
- KaxChapterTrackNumber() {}\r
KaxChapterTrackNumber(const KaxChapterTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterTrackNumber)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterDisplay : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxChapterDisplay)\r
public:\r
- KaxChapterDisplay();\r
KaxChapterDisplay(const KaxChapterDisplay & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterDisplay)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterString : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxChapterString)\r
public:\r
- KaxChapterString() {}\r
KaxChapterString(const KaxChapterString & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterString)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterLanguage : public EbmlString {\r
+DECLARE_MKX_STRING(KaxChapterLanguage)\r
public:\r
- KaxChapterLanguage() :EbmlString("eng") {}\r
KaxChapterLanguage(const KaxChapterLanguage & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterLanguage)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterCountry : public EbmlString {\r
+DECLARE_MKX_STRING(KaxChapterCountry)\r
public:\r
- KaxChapterCountry() :EbmlString() {}\r
KaxChapterCountry(const KaxChapterCountry & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterCountry)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterProcess : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxChapterProcess)\r
public:\r
- KaxChapterProcess();\r
KaxChapterProcess(const KaxChapterProcess & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterProcess)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterProcessCodecID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterProcessCodecID)\r
public:\r
- KaxChapterProcessCodecID() :EbmlUInteger(0) {}\r
KaxChapterProcessCodecID(const KaxChapterProcessCodecID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterProcessCodecID)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterProcessPrivate : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxChapterProcessPrivate)\r
public:\r
- KaxChapterProcessPrivate() {}\r
KaxChapterProcessPrivate(const KaxChapterProcessPrivate & ElementToClone) :EbmlBinary(ElementToClone) {}\r
bool ValidateSize() const {return true;}\r
\r
EBML_CONCRETE_CLASS(KaxChapterProcessPrivate)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterProcessCommand : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxChapterProcessCommand)\r
public:\r
- KaxChapterProcessCommand();\r
KaxChapterProcessCommand(const KaxChapterProcessCommand & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterProcessCommand)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterProcessTime : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterProcessTime)\r
public:\r
- KaxChapterProcessTime() {}\r
KaxChapterProcessTime(const KaxChapterProcessTime & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterProcessTime)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterProcessData : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxChapterProcessData)\r
public:\r
- KaxChapterProcessData() {}\r
KaxChapterProcessData(const KaxChapterProcessData & ElementToClone) :EbmlBinary(ElementToClone) {}\r
bool ValidateSize() const {return true;}\r
\r
#include "matroska/KaxBlock.h"\r
#include "matroska/KaxCues.h"\r
#include "matroska/KaxClusterData.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
\r
class KaxSegment;\r
\r
-class MATROSKA_DLL_API KaxCluster : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxCluster)\r
public:\r
- KaxCluster();\r
KaxCluster(const KaxCluster & ElementToClone);\r
\r
/*!\r
#include "matroska/KaxTypes.h"\r
#include "ebml/EbmlMaster.h"\r
#include "ebml/EbmlUInteger.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxClusterTimecode : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxClusterTimecode)\r
public:\r
- KaxClusterTimecode() {}\r
KaxClusterTimecode(const KaxClusterTimecode & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxClusterTimecode)\r
};\r
\r
-class MATROSKA_DLL_API KaxClusterSilentTracks : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxClusterSilentTracks)\r
public:\r
- KaxClusterSilentTracks();\r
KaxClusterSilentTracks(const KaxClusterSilentTracks & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxClusterSilentTracks)\r
};\r
\r
-class MATROSKA_DLL_API KaxClusterSilentTrackNumber : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxClusterSilentTrackNumber)\r
public:\r
- KaxClusterSilentTrackNumber() {}\r
KaxClusterSilentTrackNumber(const KaxClusterSilentTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxClusterSilentTrackNumber)\r
};\r
\r
-class MATROSKA_DLL_API KaxClusterPosition : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxClusterPosition)\r
public:\r
- KaxClusterPosition() {}\r
KaxClusterPosition(const KaxClusterPosition & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxClusterPosition)\r
};\r
\r
-class MATROSKA_DLL_API KaxClusterPrevSize : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxClusterPrevSize)\r
public:\r
- KaxClusterPrevSize() {}\r
KaxClusterPrevSize(const KaxClusterPrevSize & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxClusterPrevSize)\r
#include "ebml/EbmlMaster.h"\r
#include "ebml/EbmlUInteger.h"\r
#include "ebml/EbmlBinary.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxContentEncodings: public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxContentEncodings)\r
public:\r
- KaxContentEncodings();\r
KaxContentEncodings(const KaxContentEncodings &ElementToClone):\r
EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentEncodings)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentEncoding: public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxContentEncoding)\r
public:\r
- KaxContentEncoding();\r
KaxContentEncoding(const KaxContentEncoding &ElementToClone):\r
EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentEncoding)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentEncodingOrder: public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxContentEncodingOrder)\r
public:\r
- KaxContentEncodingOrder(): EbmlUInteger(0) {}\r
KaxContentEncodingOrder(const KaxContentEncodingOrder &ElementToClone):\r
EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentEncodingOrder)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentEncodingScope: public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxContentEncodingScope)\r
public:\r
- KaxContentEncodingScope(): EbmlUInteger(1) {}\r
KaxContentEncodingScope(const KaxContentEncodingScope &ElementToClone):\r
EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentEncodingScope)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentEncodingType: public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxContentEncodingType)\r
public:\r
- KaxContentEncodingType(): EbmlUInteger(0) {}\r
KaxContentEncodingType(const KaxContentEncodingType &ElementToClone):\r
EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentEncodingType)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentCompression: public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxContentCompression)\r
public:\r
- KaxContentCompression();\r
KaxContentCompression(const KaxContentCompression &ElementToClone):\r
EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentCompression)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentCompAlgo: public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxContentCompAlgo)\r
public:\r
- KaxContentCompAlgo(): EbmlUInteger(0) {}\r
KaxContentCompAlgo(const KaxContentCompAlgo &ElementToClone):\r
EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentCompAlgo)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentCompSettings: public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxContentCompSettings)\r
public:\r
- KaxContentCompSettings() {}\r
KaxContentCompSettings(const KaxContentCompSettings &ElementToClone):\r
EbmlBinary(ElementToClone) {}\r
bool ValidateSize(void) const { return true; }\r
EBML_CONCRETE_CLASS(KaxContentCompSettings)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentEncryption: public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxContentEncryption)\r
public:\r
- KaxContentEncryption();\r
KaxContentEncryption(const KaxContentEncryption &ElementToClone):\r
EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentEncryption)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentEncAlgo: public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxContentEncAlgo)\r
public:\r
- KaxContentEncAlgo(): EbmlUInteger(0) {}\r
KaxContentEncAlgo(const KaxContentEncAlgo &ElementToClone):\r
EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentEncAlgo)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentEncKeyID: public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxContentEncKeyID)\r
public:\r
- KaxContentEncKeyID() {}\r
KaxContentEncKeyID(const KaxContentEncKeyID &ElementToClone):\r
EbmlBinary(ElementToClone) {}\r
bool ValidateSize(void) const { return true; }\r
EBML_CONCRETE_CLASS(KaxContentEncKeyID)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentSignature: public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxContentSignature)\r
public:\r
- KaxContentSignature() {}\r
KaxContentSignature(const KaxContentSignature &ElementToClone):\r
EbmlBinary(ElementToClone) {}\r
bool ValidateSize(void) const { return true; }\r
EBML_CONCRETE_CLASS(KaxContentSignature)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentSigKeyID: public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxContentSigKeyID)\r
public:\r
- KaxContentSigKeyID() {}\r
KaxContentSigKeyID(const KaxContentSigKeyID &ElementToClone):\r
EbmlBinary(ElementToClone) {}\r
bool ValidateSize(void) const { return true; }\r
EBML_CONCRETE_CLASS(KaxContentSigKeyID)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentSigAlgo: public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxContentSigAlgo)\r
public:\r
- KaxContentSigAlgo() {}\r
KaxContentSigAlgo(const KaxContentSigAlgo &ElementToClone):\r
EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxContentSigAlgo)\r
};\r
\r
-class MATROSKA_DLL_API KaxContentSigHashAlgo: public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxContentSigHashAlgo)\r
public:\r
- KaxContentSigHashAlgo() {}\r
KaxContentSigHashAlgo(const KaxContentSigHashAlgo &ElementToClone):\r
EbmlUInteger(ElementToClone) {}\r
\r
\r
class KaxCuePoint;\r
\r
-class MATROSKA_DLL_API KaxCues : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxCues)\r
public:\r
- KaxCues();\r
KaxCues(const KaxCues & ElementToClone) :EbmlMaster(ElementToClone) {}\r
~KaxCues();\r
\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.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
- \author Steve Lhomme <robux4 @ users.sf.net>
-*/
-#ifndef LIBMATROSKA_CUES_DATA_H
-#define LIBMATROSKA_CUES_DATA_H
-
-#include "matroska/KaxTypes.h"
-#include "ebml/EbmlUInteger.h"
-#include "ebml/EbmlMaster.h"
-
-using namespace LIBEBML_NAMESPACE;
-
-START_LIBMATROSKA_NAMESPACE
-
-class KaxBlockGroup;
-class KaxBlockBlob;
-class KaxCueTrackPositions;
-class KaxInternalBlock;
-
-class MATROSKA_DLL_API KaxCuePoint : public EbmlMaster {
- public:
- KaxCuePoint();
- KaxCuePoint(const KaxCuePoint & ElementToClone) :EbmlMaster(ElementToClone) {}
- void PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale);
- void PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale);
-
- virtual bool IsSmallerThan(const EbmlElement *Cmp) const;
-
- const KaxCueTrackPositions * GetSeekPosition() const;
- bool Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const;
-
- EBML_CONCRETE_CLASS(KaxCuePoint)
-};
-
-class MATROSKA_DLL_API KaxCueTime : public EbmlUInteger {
- public:
- KaxCueTime() {}
- KaxCueTime(const KaxCueTime & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxCueTime)
-};
-
-class MATROSKA_DLL_API KaxCueTrackPositions : public EbmlMaster {
- public:
- KaxCueTrackPositions();
- KaxCueTrackPositions(const KaxCueTrackPositions & ElementToClone) :EbmlMaster(ElementToClone) {}
-
- uint64 ClusterPosition() const;
- uint16 TrackNumber() const;
-
- EBML_CONCRETE_CLASS(KaxCueTrackPositions)
-};
-
-class MATROSKA_DLL_API KaxCueTrack : public EbmlUInteger {
- public:
- KaxCueTrack() {}
- KaxCueTrack(const KaxCueTrack & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxCueTrack)
-};
-
-class MATROSKA_DLL_API KaxCueClusterPosition : public EbmlUInteger {
- public:
- KaxCueClusterPosition() {}
- KaxCueClusterPosition(const KaxCueClusterPosition & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxCueClusterPosition)
-};
-
-class MATROSKA_DLL_API KaxCueBlockNumber : public EbmlUInteger {
- public:
- KaxCueBlockNumber() :EbmlUInteger(1) {}
- KaxCueBlockNumber(const KaxCueBlockNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxCueBlockNumber)
-};
-
-#if MATROSKA_VERSION >= 2
-class MATROSKA_DLL_API KaxCueCodecState : public EbmlUInteger {
- public:
- KaxCueCodecState() :EbmlUInteger(0) {}
- KaxCueCodecState(const KaxCueCodecState & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxCueCodecState)
-};
-
-class MATROSKA_DLL_API KaxCueReference : public EbmlMaster {
- public:
- KaxCueReference();
- KaxCueReference(const KaxCueReference & ElementToClone) :EbmlMaster(ElementToClone) {}
-
- void AddReference(const KaxBlockGroup & BlockReferenced, uint64 GlobalTimecodeScale);
- void AddReference(const KaxBlockBlob & BlockReferenced, uint64 GlobalTimecodeScale);
-
- EBML_CONCRETE_CLASS(KaxCueReference)
-};
-
-class MATROSKA_DLL_API KaxCueRefTime : public EbmlUInteger {
- public:
- KaxCueRefTime() {}
- KaxCueRefTime(const KaxCueRefTime & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxCueRefTime)
-};
-
-class MATROSKA_DLL_API KaxCueRefCluster : public EbmlUInteger {
- public:
- KaxCueRefCluster() {}
- KaxCueRefCluster(const KaxCueRefCluster & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxCueRefCluster)
-};
-
-class MATROSKA_DLL_API KaxCueRefNumber : public EbmlUInteger {
- public:
- KaxCueRefNumber() :EbmlUInteger(1) {}
- KaxCueRefNumber(const KaxCueRefNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxCueRefNumber)
-};
-
-class MATROSKA_DLL_API KaxCueRefCodecState : public EbmlUInteger {
- public:
- KaxCueRefCodecState() :EbmlUInteger(0) {}
- KaxCueRefCodecState(const KaxCueRefCodecState & ElementToClone) :EbmlUInteger(ElementToClone) {}
-
- EBML_CONCRETE_CLASS(KaxCueRefCodecState)
-};
-#endif // MATROSKA_VERSION
-
-END_LIBMATROSKA_NAMESPACE
-
-#endif // LIBMATROSKA_CUES_DATA_H
+/****************************************************************************\r
+** libmatroska : parse Matroska files, see http://www.matroska.org/\r
+**\r
+** <file/class description>\r
+**\r
+** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.\r
+**\r
+** This library is free software; you can redistribute it and/or\r
+** modify it under the terms of the GNU Lesser General Public\r
+** License as published by the Free Software Foundation; either\r
+** version 2.1 of the License, or (at your option) any later version.\r
+** \r
+** This library is distributed in the hope that it will be useful,\r
+** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+** Lesser General Public License for more details.\r
+** \r
+** You should have received a copy of the GNU Lesser General Public\r
+** License along with this library; if not, write to the Free Software\r
+** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+**\r
+** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**\r
+** Contact license@matroska.org if any conditions of this licensing are\r
+** not clear to you.\r
+**\r
+**********************************************************************/\r
+\r
+/*!\r
+ \file\r
+ \version \$Id: KaxCuesData.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $\r
+ \author Steve Lhomme <robux4 @ users.sf.net>\r
+*/\r
+#ifndef LIBMATROSKA_CUES_DATA_H\r
+#define LIBMATROSKA_CUES_DATA_H\r
+\r
+#include "matroska/KaxTypes.h"\r
+#include "ebml/EbmlUInteger.h"\r
+#include "ebml/EbmlMaster.h"\r
+#include "matroska/KaxDefines.h"\r
+\r
+using namespace LIBEBML_NAMESPACE;\r
+\r
+START_LIBMATROSKA_NAMESPACE\r
+\r
+class KaxBlockGroup;\r
+class KaxBlockBlob;\r
+class KaxCueTrackPositions;\r
+class KaxInternalBlock;\r
+\r
+DECLARE_MKX_MASTER(KaxCuePoint)\r
+ public:\r
+ KaxCuePoint(const KaxCuePoint & ElementToClone) :EbmlMaster(ElementToClone) {}\r
+ void PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale);\r
+ void PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale);\r
+\r
+ virtual bool IsSmallerThan(const EbmlElement *Cmp) const;\r
+\r
+ const KaxCueTrackPositions * GetSeekPosition() const;\r
+ bool Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const;\r
+\r
+ EBML_CONCRETE_CLASS(KaxCuePoint)\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxCueTime)\r
+ public:\r
+ KaxCueTime(const KaxCueTime & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueTime)\r
+};\r
+\r
+DECLARE_MKX_MASTER(KaxCueTrackPositions)\r
+ public:\r
+ KaxCueTrackPositions(const KaxCueTrackPositions & ElementToClone) :EbmlMaster(ElementToClone) {}\r
+\r
+ uint64 ClusterPosition() const;\r
+ uint16 TrackNumber() const;\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueTrackPositions)\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxCueTrack)\r
+ public:\r
+ KaxCueTrack(const KaxCueTrack & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueTrack)\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxCueClusterPosition)\r
+ public:\r
+ KaxCueClusterPosition(const KaxCueClusterPosition & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueClusterPosition)\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxCueBlockNumber)\r
+ public:\r
+ KaxCueBlockNumber(const KaxCueBlockNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueBlockNumber)\r
+};\r
+\r
+#if MATROSKA_VERSION >= 2\r
+DECLARE_MKX_UINTEGER(KaxCueCodecState)\r
+ public:\r
+ KaxCueCodecState(const KaxCueCodecState & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueCodecState)\r
+};\r
+\r
+DECLARE_MKX_MASTER(KaxCueReference)\r
+ public:\r
+ KaxCueReference(const KaxCueReference & ElementToClone) :EbmlMaster(ElementToClone) {}\r
+ \r
+ void AddReference(const KaxBlockGroup & BlockReferenced, uint64 GlobalTimecodeScale);\r
+ void AddReference(const KaxBlockBlob & BlockReferenced, uint64 GlobalTimecodeScale);\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueReference)\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxCueRefTime)\r
+ public:\r
+ KaxCueRefTime(const KaxCueRefTime & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueRefTime)\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxCueRefCluster)\r
+ public:\r
+ KaxCueRefCluster(const KaxCueRefCluster & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueRefCluster)\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxCueRefNumber)\r
+ public:\r
+ KaxCueRefNumber(const KaxCueRefNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueRefNumber)\r
+};\r
+\r
+DECLARE_MKX_UINTEGER(KaxCueRefCodecState)\r
+ public:\r
+ KaxCueRefCodecState(const KaxCueRefCodecState & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
+\r
+ EBML_CONCRETE_CLASS(KaxCueRefCodecState)\r
+};\r
+#endif // MATROSKA_VERSION\r
+\r
+END_LIBMATROSKA_NAMESPACE\r
+\r
+#endif // LIBMATROSKA_CUES_DATA_H\r
#include "ebml/EbmlElement.h"\r
\r
#if LIBEBML_VERSION >= 0x010000\r
-#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_MASTER_NOBODY(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) \\r
+#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_MASTER_NOBODY(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) \\r
a::a() :EbmlMaster(Context_##a) {}\r
\r
-#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_UINTEGER(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_SINTEGER(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_STRING(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_UNISTRING(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_BINARY(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_FLOAT(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_DATE(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_UINTEGER_DEF(a,b,c,d,e,v) DEFINE_xxx_UINTEGER_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v)\r
+#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_UINTEGER(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_SINTEGER(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_SINTEGER_CONS(a,b,c,d,e) DEFINE_xxx_SINTEGER_CONS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_STRING_DEF(a,b,c,d,e,v) DEFINE_xxx_STRING_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v)\r
+#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_STRING(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_UNISTRING(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_BINARY(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_BINARY_CONS(a,b,c,d,e) DEFINE_xxx_BINARY_CONS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_FLOAT_DEF(a,b,c,d,e,v) DEFINE_xxx_FLOAT_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v)\r
+#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_FLOAT(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_FLOAT64(a,b,c,d,e) DEFINE_xxx_FLOAT64(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
+\r
+#define DECLARE_MKX_CONTEXT(x) extern const ebml_context MATROSKA_DLL_API EBML_Context##x;\r
+\r
+#define DECLARE_MKX_MASTER(x) DECLARE_MKX_CONTEXT(x) \\r
+class MATROSKA_DLL_API x : public EbmlMaster { \\r
+ public: x();\r
+#define DECLARE_MKX_BINARY(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlBinary { \\r
+ public: x();\r
+#define DECLARE_MKX_BINARY_CONS(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlBinary {\r
+#define DECLARE_MKX_UNISTRING(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlUnicodeString { \\r
+ public: x();\r
+#define DECLARE_MKX_STRING(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlString { \\r
+ public: x();\r
+#define DECLARE_MKX_UINTEGER(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlUInteger { \\r
+ public: x();\r
+#define DECLARE_MKX_SINTEGER_CONS(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlSInteger {\r
+#define DECLARE_MKX_SINTEGER(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlSInteger { \\r
+ public: x();\r
+#define DECLARE_MKX_DATE(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlDate { \\r
+ public: x();\r
+#define DECLARE_MKX_FLOAT(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlFloat { \\r
+ public: x();\r
+\r
#else\r
-#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_MASTER_NOBODY(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) \\r
+#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_MASTER_NOBODY(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) \\r
a::a() :EbmlMaster(Context_##a) {}\r
\r
-#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_UINTEGER_DEF(a,b,c,d,e,v) DEFINE_xxx_UINTEGER_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v)\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_DEF(a,b,c,d,e,v) DEFINE_xxx_STRING_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v)\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_DEF(a,b,c,d,e,v) DEFINE_xxx_FLOAT_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v)\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_BINARY_CONS(a,b,c,d,e) DEFINE_xxx_CLASS_CONS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+#define DEFINE_MKX_SINTEGER_CONS(a,b,c,d,e) DEFINE_xxx_CLASS_CONS(a,b,c,d,e,*GetKaxGlobal_Context)\r
+\r
+#define DECLARE_MKX_CONTEXT(x)\r
+\r
+#define DECLARE_MKX_MASTER(x) DECLARE_MKX_CONTEXT(x) \\r
+class MATROSKA_DLL_API x : public EbmlMaster { \\r
+ public: x();\r
+#define DECLARE_MKX_BINARY(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlBinary { \\r
+ public: x();\r
+#define DECLARE_MKX_BINARY_CONS(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlBinary {\r
+#define DECLARE_MKX_UNISTRING(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlUnicodeString { \\r
+ public: x();\r
+#define DECLARE_MKX_STRING(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlString { \\r
+ public: x();\r
+#define DECLARE_MKX_UINTEGER(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlUInteger { \\r
+ public: x();\r
+#define DECLARE_MKX_SINTEGER_CONS(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlSInteger {\r
+#define DECLARE_MKX_SINTEGER(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlSInteger { \\r
+ public: x();\r
+#define DECLARE_MKX_DATE(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlDate { \\r
+ public: x();\r
+#define DECLARE_MKX_FLOAT(x) DECLARE_MKX_CONTEXT(x) \\r
+ class MATROSKA_DLL_API x : public EbmlFloat { \\r
+ public: x();\r
#endif\r
\r
#endif // LIBMATROSKA_DEFINES_H\r
#include "matroska/KaxTypes.h"\r
#include "ebml/EbmlMaster.h"\r
#include "ebml/EbmlUnicodeString.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxInfo : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxInfo)\r
public:\r
- KaxInfo();\r
KaxInfo(const KaxInfo & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxInfo)\r
};\r
\r
-class MATROSKA_DLL_API KaxMuxingApp : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxMuxingApp)\r
public:\r
- KaxMuxingApp() {}\r
KaxMuxingApp(const KaxMuxingApp & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxMuxingApp)\r
};\r
\r
-class MATROSKA_DLL_API KaxWritingApp : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxWritingApp)\r
public:\r
- KaxWritingApp() {}\r
KaxWritingApp(const KaxWritingApp & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxWritingApp)\r
#include "ebml/EbmlBinary.h"\r
#include "ebml/EbmlDate.h"\r
#include "ebml/EbmlMaster.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxSegmentUID : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxSegmentUID)\r
public:\r
- KaxSegmentUID() {}\r
KaxSegmentUID(const KaxSegmentUID & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const { return (GetSize() == 16);}\r
\r
EBML_CONCRETE_CLASS(KaxSegmentUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxSegmentFilename : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxSegmentFilename)\r
public:\r
- KaxSegmentFilename() {}\r
KaxSegmentFilename(const KaxSegmentFilename & ElementToClone) :EbmlUnicodeString(ElementToClone){}\r
\r
EBML_CONCRETE_CLASS(KaxSegmentFilename)\r
};\r
\r
+DECLARE_MKX_CONTEXT(KaxPrevUID);\r
class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID {\r
public:\r
- KaxPrevUID() {}\r
+ KaxPrevUID();\r
KaxPrevUID(const KaxPrevUID & ElementToClone) :KaxSegmentUID(ElementToClone){}\r
bool ValidateSize() const { return (GetSize() == 16);}\r
\r
EBML_CONCRETE_CLASS(KaxPrevUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxPrevFilename : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxPrevFilename)\r
public:\r
- KaxPrevFilename() :EbmlUnicodeString() {}\r
KaxPrevFilename(const KaxPrevFilename & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxPrevFilename)\r
};\r
\r
+DECLARE_MKX_CONTEXT(KaxNextUID);\r
class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID {\r
public:\r
- KaxNextUID() {}\r
+ KaxNextUID();\r
KaxNextUID(const KaxNextUID & ElementToClone) :KaxSegmentUID(ElementToClone){}\r
bool ValidateSize() const { return (GetSize() == 16);}\r
\r
EBML_CONCRETE_CLASS(KaxNextUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxNextFilename : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxNextFilename)\r
public:\r
- KaxNextFilename() {}\r
KaxNextFilename(const KaxNextFilename & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxNextFilename)\r
};\r
\r
-class MATROSKA_DLL_API KaxSegmentFamily : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxSegmentFamily)\r
public:\r
- KaxSegmentFamily() {}\r
KaxSegmentFamily(const KaxSegmentFamily & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const { return (GetSize() == 16);}\r
\r
EBML_CONCRETE_CLASS(KaxSegmentFamily)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterTranslate : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxChapterTranslate)\r
public:\r
- KaxChapterTranslate();\r
KaxChapterTranslate(const KaxChapterTranslate & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterTranslate)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterTranslateCodec : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterTranslateCodec)\r
public:\r
- KaxChapterTranslateCodec() {}\r
KaxChapterTranslateCodec(const KaxChapterTranslateCodec & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterTranslateCodec)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterTranslateEditionUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxChapterTranslateEditionUID)\r
public:\r
- KaxChapterTranslateEditionUID() {}\r
KaxChapterTranslateEditionUID(const KaxChapterTranslateEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxChapterTranslateEditionUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxChapterTranslateID : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxChapterTranslateID)\r
public:\r
- KaxChapterTranslateID() {}\r
KaxChapterTranslateID(const KaxChapterTranslateID & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const { return true;}\r
\r
EBML_CONCRETE_CLASS(KaxChapterTranslateID)\r
};\r
\r
-class MATROSKA_DLL_API KaxTimecodeScale : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTimecodeScale)\r
public:\r
- KaxTimecodeScale() :EbmlUInteger(1000000) {}\r
KaxTimecodeScale(const KaxTimecodeScale & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTimecodeScale)\r
};\r
\r
-class MATROSKA_DLL_API KaxDuration : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxDuration)\r
public:\r
- KaxDuration(): EbmlFloat(FLOAT_64) {}\r
KaxDuration(const KaxDuration & ElementToClone) :EbmlFloat(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxDuration)\r
};\r
\r
-class MATROSKA_DLL_API KaxDateUTC : public EbmlDate {\r
+DECLARE_MKX_DATE(KaxDateUTC)\r
public:\r
- KaxDateUTC() {}\r
KaxDateUTC(const KaxDateUTC & ElementToClone) :EbmlDate(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxDateUTC)\r
};\r
\r
-class MATROSKA_DLL_API KaxTitle : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTitle)\r
public:\r
- KaxTitle() {}\r
KaxTitle(const KaxTitle & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTitle)\r
#include "ebml/EbmlMaster.h"\r
#include "ebml/EbmlBinary.h"\r
#include "ebml/EbmlUInteger.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
class KaxSegment;\r
class KaxSeek;\r
\r
-class MATROSKA_DLL_API KaxSeekHead : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxSeekHead)\r
public:\r
- KaxSeekHead();\r
KaxSeekHead(const KaxSeekHead & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
/*!\r
EBML_CONCRETE_CLASS(KaxSeekHead)\r
};\r
\r
-class MATROSKA_DLL_API KaxSeek : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxSeek)\r
public:\r
- KaxSeek();\r
KaxSeek(const KaxSeek & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
int64 Location() const;\r
EBML_CONCRETE_CLASS(KaxSeek)\r
};\r
\r
-class MATROSKA_DLL_API KaxSeekID : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxSeekID)\r
public:\r
- KaxSeekID() {}\r
KaxSeekID(const KaxSeekID & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return GetSize() <= 4;}\r
\r
EBML_CONCRETE_CLASS(KaxSeekID)\r
};\r
\r
-class MATROSKA_DLL_API KaxSeekPosition : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxSeekPosition)\r
public:\r
- KaxSeekPosition() {}\r
KaxSeekPosition(const KaxSeekPosition & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxSeekPosition)\r
\r
#include "matroska/KaxTypes.h"\r
#include "ebml/EbmlMaster.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxSegment : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxSegment)\r
public:\r
- KaxSegment();\r
KaxSegment(const KaxSegment & ElementToClone);\r
\r
/*!\r
#include "ebml/EbmlString.h"\r
#include "ebml/EbmlUnicodeString.h"\r
#include "ebml/EbmlBinary.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxTag : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTag)\r
public:\r
- KaxTag();\r
KaxTag(const KaxTag & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTag)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagTargets : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagTargets)\r
public:\r
- KaxTagTargets();\r
KaxTagTargets(const KaxTagTargets & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagTargets)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagGeneral : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagGeneral)\r
public:\r
- KaxTagGeneral();\r
KaxTagGeneral(const KaxTagGeneral & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagGeneral)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagGenres : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagGenres)\r
public:\r
- KaxTagGenres();\r
KaxTagGenres(const KaxTagGenres & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagGenres)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagAudioSpecific : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagAudioSpecific)\r
public:\r
- KaxTagAudioSpecific();\r
KaxTagAudioSpecific(const KaxTagAudioSpecific & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagAudioSpecific)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagImageSpecific : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagImageSpecific)\r
public:\r
- KaxTagImageSpecific();\r
KaxTagImageSpecific(const KaxTagImageSpecific & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagImageSpecific)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagTargetTypeValue : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagTargetTypeValue)\r
public:\r
- KaxTagTargetTypeValue() :EbmlUInteger(50) {}\r
KaxTagTargetTypeValue(const KaxTagTargetTypeValue & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagTargetTypeValue)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagTargetType : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagTargetType)\r
public:\r
- KaxTagTargetType() {}\r
KaxTagTargetType(const KaxTagTargetType & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagTargetType)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagTrackUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagTrackUID)\r
public:\r
- KaxTagTrackUID() :EbmlUInteger(0) {}\r
KaxTagTrackUID(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagTrackUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagEditionUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagEditionUID)\r
public:\r
- KaxTagEditionUID() :EbmlUInteger(0) {}\r
KaxTagEditionUID(const KaxTagEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagEditionUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagChapterUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagChapterUID)\r
public:\r
- KaxTagChapterUID() :EbmlUInteger(0) {}\r
KaxTagChapterUID(const KaxTagChapterUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagChapterUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagAttachmentUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagAttachmentUID)\r
public:\r
- KaxTagAttachmentUID() :EbmlUInteger(0) {}\r
KaxTagAttachmentUID(const KaxTagAttachmentUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagAttachmentUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagArchivalLocation : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagArchivalLocation)\r
public:\r
- KaxTagArchivalLocation() {}\r
KaxTagArchivalLocation(const KaxTagArchivalLocation & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagArchivalLocation)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagAudioEncryption : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagAudioEncryption)\r
public:\r
- KaxTagAudioEncryption() {}\r
KaxTagAudioEncryption(const KaxTagAudioEncryption & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxTagAudioEncryption)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagAudioGain : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxTagAudioGain)\r
public:\r
- KaxTagAudioGain() {}\r
KaxTagAudioGain(const KaxTagAudioGain & ElementToClone) :EbmlFloat(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagAudioGain)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagAudioGenre : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagAudioGenre)\r
public:\r
- KaxTagAudioGenre() {}\r
KaxTagAudioGenre(const KaxTagAudioGenre & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagAudioGenre)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagAudioPeak : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxTagAudioPeak)\r
public:\r
- KaxTagAudioPeak() {}\r
KaxTagAudioPeak(const KaxTagAudioPeak & ElementToClone) :EbmlFloat(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagAudioPeak)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagBibliography : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagBibliography)\r
public:\r
- KaxTagBibliography() {}\r
KaxTagBibliography(const KaxTagBibliography & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagBibliography)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagBPM : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxTagBPM)\r
public:\r
- KaxTagBPM() {}\r
KaxTagBPM(const KaxTagBPM & ElementToClone) :EbmlFloat(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagBPM)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagCaptureDPI : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagCaptureDPI)\r
public:\r
- KaxTagCaptureDPI() {}\r
KaxTagCaptureDPI(const KaxTagCaptureDPI & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagCaptureDPI)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagCaptureLightness : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagCaptureLightness)\r
public:\r
- KaxTagCaptureLightness() {}\r
KaxTagCaptureLightness(const KaxTagCaptureLightness & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxTagCaptureLightness)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagCapturePaletteSetting : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagCapturePaletteSetting)\r
public:\r
- KaxTagCapturePaletteSetting() {}\r
KaxTagCapturePaletteSetting(const KaxTagCapturePaletteSetting & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagCapturePaletteSetting)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagCaptureSharpness : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagCaptureSharpness)\r
public:\r
- KaxTagCaptureSharpness() {}\r
KaxTagCaptureSharpness(const KaxTagCaptureSharpness & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxTagCaptureSharpness)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagCropped : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagCropped)\r
public:\r
- KaxTagCropped() {}\r
KaxTagCropped(const KaxTagCropped & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagCropped)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagDiscTrack : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagDiscTrack)\r
public:\r
- KaxTagDiscTrack() {}\r
KaxTagDiscTrack(const KaxTagDiscTrack & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagDiscTrack)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagEncoder : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagEncoder)\r
public:\r
- KaxTagEncoder() {}\r
KaxTagEncoder(const KaxTagEncoder & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagEncoder)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagEncodeSettings : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagEncodeSettings)\r
public:\r
- KaxTagEncodeSettings() {}\r
KaxTagEncodeSettings(const KaxTagEncodeSettings & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagEncodeSettings)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagEqualisation : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagEqualisation)\r
public:\r
- KaxTagEqualisation() {}\r
KaxTagEqualisation(const KaxTagEqualisation & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxTagEqualisation)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagFile : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagFile)\r
public:\r
- KaxTagFile() {}\r
KaxTagFile(const KaxTagFile & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagFile)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagInitialKey : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagInitialKey)\r
public:\r
- KaxTagInitialKey() {}\r
KaxTagInitialKey(const KaxTagInitialKey & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagInitialKey)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagKeywords : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagKeywords)\r
public:\r
- KaxTagKeywords() {}\r
KaxTagKeywords(const KaxTagKeywords & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagKeywords)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagLanguage : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagLanguage)\r
public:\r
- KaxTagLanguage() {}\r
KaxTagLanguage(const KaxTagLanguage & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagLanguage)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagLength : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagLength)\r
public:\r
- KaxTagLength() {}\r
KaxTagLength(const KaxTagLength & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagLength)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMood : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMood)\r
public:\r
- KaxTagMood() {}\r
KaxTagMood(const KaxTagMood & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMood)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagOfficialAudioFileURL : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagOfficialAudioFileURL)\r
public:\r
- KaxTagOfficialAudioFileURL() {}\r
KaxTagOfficialAudioFileURL(const KaxTagOfficialAudioFileURL & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagOfficialAudioFileURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagOfficialAudioSourceURL : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagOfficialAudioSourceURL)\r
public:\r
- KaxTagOfficialAudioSourceURL() {}\r
KaxTagOfficialAudioSourceURL(const KaxTagOfficialAudioSourceURL & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagOfficialAudioSourceURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagOriginalDimensions : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagOriginalDimensions)\r
public:\r
- KaxTagOriginalDimensions() {}\r
KaxTagOriginalDimensions(const KaxTagOriginalDimensions & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagOriginalDimensions)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagOriginalMediaType : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagOriginalMediaType)\r
public:\r
- KaxTagOriginalMediaType() {}\r
KaxTagOriginalMediaType(const KaxTagOriginalMediaType & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagOriginalMediaType)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagPlayCounter : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagPlayCounter)\r
public:\r
- KaxTagPlayCounter() {}\r
KaxTagPlayCounter(const KaxTagPlayCounter & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagPlayCounter)\r
}; \r
\r
-class MATROSKA_DLL_API KaxTagPlaylistDelay : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagPlaylistDelay)\r
public:\r
- KaxTagPlaylistDelay() {}\r
KaxTagPlaylistDelay(const KaxTagPlaylistDelay & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagPlaylistDelay)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagPopularimeter : public EbmlSInteger {\r
+DECLARE_MKX_SINTEGER(KaxTagPopularimeter)\r
public:\r
- KaxTagPopularimeter() {}\r
KaxTagPopularimeter(const KaxTagPopularimeter & ElementToClone) :EbmlSInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagPopularimeter)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagProduct : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagProduct)\r
public:\r
- KaxTagProduct() {}\r
KaxTagProduct(const KaxTagProduct & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagProduct)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagRating : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagRating)\r
public:\r
- KaxTagRating() {}\r
KaxTagRating(const KaxTagRating & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxTagRating)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagRecordLocation : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagRecordLocation)\r
public:\r
- KaxTagRecordLocation() {}\r
KaxTagRecordLocation(const KaxTagRecordLocation & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagRecordLocation)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagSetPart : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagSetPart)\r
public:\r
- KaxTagSetPart() {}\r
KaxTagSetPart(const KaxTagSetPart & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagSetPart)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagSource : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagSource)\r
public:\r
- KaxTagSource() {}\r
KaxTagSource(const KaxTagSource & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagSource)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagSourceForm : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagSourceForm)\r
public:\r
- KaxTagSourceForm() {}\r
KaxTagSourceForm(const KaxTagSourceForm & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagSourceForm)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagSubGenre : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagSubGenre)\r
public:\r
- KaxTagSubGenre() {}\r
KaxTagSubGenre(const KaxTagSubGenre & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagSubGenre)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagSubject : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagSubject)\r
public:\r
- KaxTagSubject() {}\r
KaxTagSubject(const KaxTagSubject & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagSubject)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagUnsynchronisedText : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagUnsynchronisedText)\r
public:\r
- KaxTagUnsynchronisedText() {}\r
KaxTagUnsynchronisedText(const KaxTagUnsynchronisedText & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagUnsynchronisedText)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagUserDefinedURL : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagUserDefinedURL)\r
public:\r
- KaxTagUserDefinedURL() {}\r
KaxTagUserDefinedURL(const KaxTagUserDefinedURL & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagUserDefinedURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagVideoGenre : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagVideoGenre)\r
public:\r
- KaxTagVideoGenre() {}\r
KaxTagVideoGenre(const KaxTagVideoGenre & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return (GetSize() >= 2);}\r
\r
EBML_CONCRETE_CLASS(KaxTagVideoGenre)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagSimple : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagSimple)\r
public:\r
- KaxTagSimple();\r
KaxTagSimple(const KaxTagSimple & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagSimple)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagName : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagName)\r
public:\r
- KaxTagName() {}\r
KaxTagName(const KaxTagName & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagName)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagLangue : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagLangue)\r
public:\r
- KaxTagLangue(): EbmlString("und") {}\r
KaxTagLangue(const KaxTagLangue & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagLangue)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagDefault : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagDefault)\r
public:\r
- KaxTagDefault() :EbmlUInteger(1) {}\r
KaxTagDefault(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagDefault)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagString : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagString)\r
public:\r
- KaxTagString() {}\r
KaxTagString(const KaxTagString & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagString)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagBinary : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagBinary)\r
public:\r
- KaxTagBinary() {}\r
KaxTagBinary(const KaxTagBinary & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // {return (GetSize() >= 0);}\r
\r
#include "ebml/EbmlString.h"\r
#include "ebml/EbmlUnicodeString.h"\r
#include "ebml/EbmlBinary.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
KaxTagMultiTitleType_Series //This would be used to label a set of ID 3. For example, The Simpsons.\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiComment : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagMultiComment)\r
public:\r
- KaxTagMultiComment();\r
KaxTagMultiComment(const KaxTagMultiComment & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiComment)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiCommentName : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiCommentName)\r
public:\r
- KaxTagMultiCommentName() {}\r
KaxTagMultiCommentName(const KaxTagMultiCommentName & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiCommentName)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiCommentComments : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiCommentComments)\r
public:\r
- KaxTagMultiCommentComments() {}\r
KaxTagMultiCommentComments(const KaxTagMultiCommentComments & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiCommentComments)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiCommentLanguage : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiCommentLanguage)\r
public:\r
- KaxTagMultiCommentLanguage() {}\r
KaxTagMultiCommentLanguage(const KaxTagMultiCommentLanguage & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiCommentLanguage)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiCommercial : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagMultiCommercial)\r
public:\r
- KaxTagMultiCommercial();\r
KaxTagMultiCommercial(const KaxTagMultiCommercial & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiCommercial)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagCommercial : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagCommercial)\r
public:\r
- KaxTagCommercial();\r
KaxTagCommercial(const KaxTagCommercial & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagCommercial)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiCommercialType : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagMultiCommercialType)\r
public:\r
- KaxTagMultiCommercialType() {}\r
KaxTagMultiCommercialType(const KaxTagMultiCommercialType & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiCommercialType)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiCommercialAddress : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiCommercialAddress)\r
public:\r
- KaxTagMultiCommercialAddress() {}\r
KaxTagMultiCommercialAddress(const KaxTagMultiCommercialAddress & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiCommercialAddress)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiCommercialURL : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiCommercialURL)\r
public:\r
- KaxTagMultiCommercialURL() {}\r
KaxTagMultiCommercialURL(const KaxTagMultiCommercialURL & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiCommercialURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiCommercialEmail : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiCommercialEmail)\r
public:\r
- KaxTagMultiCommercialEmail() {}\r
KaxTagMultiCommercialEmail(const KaxTagMultiCommercialEmail & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiCommercialEmail)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiPrice : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagMultiPrice)\r
public:\r
- KaxTagMultiPrice();\r
KaxTagMultiPrice(const KaxTagMultiPrice & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiPrice)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiPriceCurrency : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiPriceCurrency)\r
public:\r
- KaxTagMultiPriceCurrency() {}\r
KaxTagMultiPriceCurrency(const KaxTagMultiPriceCurrency & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiPriceCurrency)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiPriceAmount : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxTagMultiPriceAmount)\r
public:\r
- KaxTagMultiPriceAmount() :EbmlFloat() {}\r
KaxTagMultiPriceAmount(const KaxTagMultiPriceAmount & ElementToClone) :EbmlFloat(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiPriceAmount)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiPricePriceDate : public EbmlDate {\r
+DECLARE_MKX_DATE(KaxTagMultiPricePriceDate)\r
public:\r
- KaxTagMultiPricePriceDate() :EbmlDate() {}\r
KaxTagMultiPricePriceDate(const KaxTagMultiPricePriceDate & ElementToClone) :EbmlDate(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiPricePriceDate)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiDate : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagMultiDate)\r
public:\r
- KaxTagMultiDate();\r
KaxTagMultiDate(const KaxTagMultiDate & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiDate)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagDate : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagDate)\r
public:\r
- KaxTagDate();\r
KaxTagDate(const KaxTagDate & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagDate)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiDateType : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagMultiDateType)\r
public:\r
- KaxTagMultiDateType() {}\r
KaxTagMultiDateType(const KaxTagMultiDateType & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiDateType)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiDateDateBegin : public EbmlDate {\r
+DECLARE_MKX_DATE(KaxTagMultiDateDateBegin)\r
public:\r
- KaxTagMultiDateDateBegin() :EbmlDate() {}\r
KaxTagMultiDateDateBegin(const KaxTagMultiDateDateBegin & ElementToClone) :EbmlDate(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiDateDateBegin)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiDateDateEnd : public EbmlDate {\r
+DECLARE_MKX_DATE(KaxTagMultiDateDateEnd)\r
public:\r
- KaxTagMultiDateDateEnd() :EbmlDate() {}\r
KaxTagMultiDateDateEnd(const KaxTagMultiDateDateEnd & ElementToClone) :EbmlDate(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiDateDateEnd)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiEntity : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagMultiEntity)\r
public:\r
- KaxTagMultiEntity();\r
KaxTagMultiEntity(const KaxTagMultiEntity & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiEntity)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagEntity : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagEntity)\r
public:\r
- KaxTagEntity();\r
KaxTagEntity(const KaxTagEntity & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagEntity)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiEntityType : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagMultiEntityType)\r
public:\r
- KaxTagMultiEntityType() {}\r
KaxTagMultiEntityType(const KaxTagMultiEntityType & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiEntityType)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiEntityName : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiEntityName)\r
public:\r
- KaxTagMultiEntityName() {}\r
KaxTagMultiEntityName(const KaxTagMultiEntityName & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiEntityName)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiEntityAddress : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiEntityAddress)\r
public:\r
- KaxTagMultiEntityAddress() {}\r
KaxTagMultiEntityAddress(const KaxTagMultiEntityAddress & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiEntityAddress)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiEntityURL : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiEntityURL)\r
public:\r
- KaxTagMultiEntityURL() {}\r
KaxTagMultiEntityURL(const KaxTagMultiEntityURL & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiEntityURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiEntityEmail : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiEntityEmail)\r
public:\r
- KaxTagMultiEntityEmail() {}\r
KaxTagMultiEntityEmail(const KaxTagMultiEntityEmail & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiEntityEmail)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiIdentifier : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagMultiIdentifier)\r
public:\r
- KaxTagMultiIdentifier();\r
KaxTagMultiIdentifier(const KaxTagMultiIdentifier & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiIdentifier)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagIdentifier : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagIdentifier)\r
public:\r
- KaxTagIdentifier();\r
KaxTagIdentifier(const KaxTagIdentifier & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagIdentifier)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiIdentifierType : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagMultiIdentifierType)\r
public:\r
- KaxTagMultiIdentifierType() {}\r
KaxTagMultiIdentifierType(const KaxTagMultiIdentifierType & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiIdentifierType)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiIdentifierBinary : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagMultiIdentifierBinary)\r
public:\r
- KaxTagMultiIdentifierBinary() {}\r
KaxTagMultiIdentifierBinary(const KaxTagMultiIdentifierBinary & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiIdentifierBinary)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiIdentifierString : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiIdentifierString)\r
public:\r
- KaxTagMultiIdentifierString() {}\r
KaxTagMultiIdentifierString(const KaxTagMultiIdentifierString & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiIdentifierString)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiLegal : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagMultiLegal)\r
public:\r
- KaxTagMultiLegal();\r
KaxTagMultiLegal(const KaxTagMultiLegal & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiLegal)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagLegal : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagLegal)\r
public:\r
- KaxTagLegal();\r
KaxTagLegal(const KaxTagLegal & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagLegal)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiLegalType : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagMultiLegalType)\r
public:\r
- KaxTagMultiLegalType() {}\r
KaxTagMultiLegalType(const KaxTagMultiLegalType & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiLegalType)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiLegalContent : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiLegalContent)\r
public:\r
- KaxTagMultiLegalContent() {}\r
KaxTagMultiLegalContent(const KaxTagMultiLegalContent & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiLegalContent)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiLegalURL : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiLegalURL)\r
public:\r
- KaxTagMultiLegalURL() {}\r
KaxTagMultiLegalURL(const KaxTagMultiLegalURL & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiLegalURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiLegalAddress : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiLegalAddress)\r
public:\r
- KaxTagMultiLegalAddress() {}\r
KaxTagMultiLegalAddress(const KaxTagMultiLegalAddress & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiLegalAddress)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiTitle : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagMultiTitle)\r
public:\r
- KaxTagMultiTitle();\r
KaxTagMultiTitle(const KaxTagMultiTitle & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiTitle)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagTitle : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagTitle)\r
public:\r
- KaxTagTitle();\r
KaxTagTitle(const KaxTagTitle & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagTitle)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiTitleType : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagMultiTitleType)\r
public:\r
- KaxTagMultiTitleType() {}\r
KaxTagMultiTitleType(const KaxTagMultiTitleType & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiTitleType)\r
};\r
\r
\r
-class MATROSKA_DLL_API KaxTagMultiTitleName : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiTitleName)\r
public:\r
- KaxTagMultiTitleName() {}\r
KaxTagMultiTitleName(const KaxTagMultiTitleName & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiTitleName)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiTitleSubTitle : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiTitleSubTitle)\r
public:\r
- KaxTagMultiTitleSubTitle() {}\r
KaxTagMultiTitleSubTitle(const KaxTagMultiTitleSubTitle & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiTitleSubTitle)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiTitleEdition : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiTitleEdition)\r
public:\r
- KaxTagMultiTitleEdition() {}\r
KaxTagMultiTitleEdition(const KaxTagMultiTitleEdition & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiTitleEdition)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiTitleAddress : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTagMultiTitleAddress)\r
public:\r
- KaxTagMultiTitleAddress() {}\r
KaxTagMultiTitleAddress(const KaxTagMultiTitleAddress & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiTitleAddress)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiTitleURL : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiTitleURL)\r
public:\r
- KaxTagMultiTitleURL() {}\r
KaxTagMultiTitleURL(const KaxTagMultiTitleURL & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiTitleURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiTitleEmail : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiTitleEmail)\r
public:\r
- KaxTagMultiTitleEmail() {}\r
KaxTagMultiTitleEmail(const KaxTagMultiTitleEmail & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiTitleEmail)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiTitleLanguage : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTagMultiTitleLanguage)\r
public:\r
- KaxTagMultiTitleLanguage() {}\r
KaxTagMultiTitleLanguage(const KaxTagMultiTitleLanguage & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiTitleLanguage)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagMultiAttachment : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagMultiAttachment)\r
public:\r
- KaxTagMultiAttachment();\r
KaxTagMultiAttachment(const KaxTagMultiAttachment & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagMultiAttachment)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagAttachment : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTagAttachment)\r
public:\r
- KaxTagAttachment();\r
KaxTagAttachment(const KaxTagAttachment & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagAttachment)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagAttachmentID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTagAttachmentID)\r
public:\r
- KaxTagAttachmentID() {}\r
KaxTagAttachmentID(const KaxTagAttachmentID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTagAttachmentID)\r
};\r
\r
#if 0\r
-class MATROSKA_DLL_API KaxTagBPM : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxTagBPM)\r
public:\r
- KaxTagBPM() :EbmlFloat() {}\r
-\r
EBML_CONCRETE_CLASS(KaxTagBPM)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagPopularimeter : public EbmlSInteger {\r
+DECLARE_MKX_SINTEGER(KaxTagPopularimeter)\r
public:\r
- KaxTagPopularimeter() {}\r
-\r
EBML_CONCRETE_CLASS(KaxTagPopularimeter)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagRating : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagRating)\r
public:\r
- KaxTagRating() {}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxTagRating)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagSetPart : public EbmlUInteger {\r
- public:\r
- KaxTagSetPart() {}\r
-\r
+DECLARE_MKX_UINTEGER(KaxTagSetPart)\r
EBML_CONCRETE_CLASS(KaxTagSetPart)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagUserDefinedURL : public EbmlString {\r
- public:\r
- KaxTagUserDefinedURL() {}\r
-\r
+DECLARE_MKX_STRING(KaxTagUserDefinedURL)\r
EBML_CONCRETE_CLASS(KaxTagUserDefinedURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxTagVideoSecondaryGenre : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTagVideoSecondaryGenre)\r
public:\r
- KaxTagVideoSecondaryGenre() {}\r
bool ValidateSize() const {return (Size >= 4);}\r
\r
EBML_CONCRETE_CLASS(KaxTagVideoSecondaryGenre)\r
};\r
\r
-class MATROSKA_DLL_API KaxWritingApp : public EbmlUnicodeString {\r
- public:\r
- KaxWritingApp() {}\r
-\r
+DECLARE_MKX_UNISTRING(KaxWritingApp)\r
EBML_CONCRETE_CLASS(KaxWritingApp)\r
};\r
#endif\r
\r
#include "matroska/KaxTypes.h"\r
#include "ebml/EbmlMaster.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxTags : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTags)\r
public:\r
- KaxTags();\r
KaxTags(const KaxTags & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTags)\r
#include "ebml/EbmlFloat.h"\r
#include "ebml/EbmlUInteger.h"\r
#include "ebml/EbmlBinary.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxTrackAudio : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTrackAudio)\r
public:\r
- KaxTrackAudio();\r
KaxTrackAudio(const KaxTrackAudio & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackAudio)\r
};\r
\r
-class MATROSKA_DLL_API KaxAudioSamplingFreq : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxAudioSamplingFreq)\r
public:\r
- KaxAudioSamplingFreq() :EbmlFloat(8000.0) {}\r
KaxAudioSamplingFreq(const KaxAudioSamplingFreq & ElementToClone) :EbmlFloat(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxAudioSamplingFreq)\r
};\r
\r
-class MATROSKA_DLL_API KaxAudioOutputSamplingFreq : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxAudioOutputSamplingFreq)\r
public:\r
- KaxAudioOutputSamplingFreq() :EbmlFloat() {}\r
KaxAudioOutputSamplingFreq(const KaxAudioOutputSamplingFreq & ElementToClone) :EbmlFloat(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxAudioOutputSamplingFreq)\r
};\r
\r
-class MATROSKA_DLL_API KaxAudioChannels : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxAudioChannels)\r
public:\r
- KaxAudioChannels() :EbmlUInteger(1) {}\r
KaxAudioChannels(const KaxAudioChannels & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxAudioChannels)\r
};\r
\r
#if MATROSKA_VERSION >= 2\r
-class MATROSKA_DLL_API KaxAudioPosition : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxAudioPosition)\r
public:\r
- KaxAudioPosition() {}\r
KaxAudioPosition(const KaxAudioPosition & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize(void) const {return true;}\r
\r
};\r
#endif // MATROSKA_VERSION\r
\r
-class MATROSKA_DLL_API KaxAudioBitDepth : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxAudioBitDepth)\r
public:\r
- KaxAudioBitDepth() {}\r
KaxAudioBitDepth(const KaxAudioBitDepth & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxAudioBitDepth)\r
#include "ebml/EbmlUnicodeString.h"\r
#include "ebml/EbmlBinary.h"\r
#include "ebml/EbmlMaster.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxTrackNumber : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackNumber)\r
public:\r
- KaxTrackNumber() {}\r
KaxTrackNumber(const KaxTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackNumber)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackUID)\r
public:\r
- KaxTrackUID() {}\r
KaxTrackUID(const KaxTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackType : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackType)\r
public:\r
- KaxTrackType() {}\r
KaxTrackType(const KaxTrackType & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackType)\r
};\r
\r
#if MATROSKA_VERSION >= 2\r
-class MATROSKA_DLL_API KaxTrackFlagEnabled : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackFlagEnabled)\r
public:\r
- KaxTrackFlagEnabled() :EbmlUInteger(1) {}\r
KaxTrackFlagEnabled(const KaxTrackFlagEnabled & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackFlagEnabled)\r
};\r
#endif // MATROSKA_VERSION\r
\r
-class MATROSKA_DLL_API KaxTrackFlagDefault : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackFlagDefault)\r
public:\r
- KaxTrackFlagDefault() :EbmlUInteger(1) {}\r
KaxTrackFlagDefault(const KaxTrackFlagDefault & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackFlagDefault)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackFlagForced : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackFlagForced)\r
public:\r
- KaxTrackFlagForced() :EbmlUInteger(0) {}\r
KaxTrackFlagForced(const KaxTrackFlagForced & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackFlagForced)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackFlagLacing : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackFlagLacing)\r
public:\r
- KaxTrackFlagLacing() :EbmlUInteger(1) {}\r
KaxTrackFlagLacing(const KaxTrackFlagLacing & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackFlagLacing)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackMinCache : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackMinCache)\r
public:\r
- KaxTrackMinCache() :EbmlUInteger(0) {}\r
KaxTrackMinCache(const KaxTrackMinCache & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackMinCache)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackMaxCache : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackMaxCache)\r
public:\r
- KaxTrackMaxCache() {}\r
KaxTrackMaxCache(const KaxTrackMaxCache & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackMaxCache)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackDefaultDuration : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackDefaultDuration)\r
public:\r
- KaxTrackDefaultDuration() {}\r
KaxTrackDefaultDuration(const KaxTrackDefaultDuration & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackDefaultDuration)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackTimecodeScale : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxTrackTimecodeScale)\r
public:\r
- KaxTrackTimecodeScale() :EbmlFloat(1.0) {}\r
KaxTrackTimecodeScale(const KaxTrackTimecodeScale & ElementToClone) :EbmlFloat(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackTimecodeScale)\r
};\r
\r
-class MATROSKA_DLL_API KaxMaxBlockAdditionID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxMaxBlockAdditionID)\r
public:\r
- KaxMaxBlockAdditionID() :EbmlUInteger(0) {}\r
KaxMaxBlockAdditionID(const KaxMaxBlockAdditionID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxMaxBlockAdditionID)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackName : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxTrackName)\r
public:\r
- KaxTrackName() {}\r
KaxTrackName(const KaxTrackName & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackName)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackLanguage : public EbmlString {\r
+DECLARE_MKX_STRING(KaxTrackLanguage)\r
public:\r
- KaxTrackLanguage() :EbmlString("eng") {}\r
KaxTrackLanguage(const KaxTrackLanguage & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackLanguage)\r
};\r
\r
-class MATROSKA_DLL_API KaxCodecID : public EbmlString {\r
+DECLARE_MKX_STRING(KaxCodecID)\r
public:\r
- KaxCodecID() {}\r
KaxCodecID(const KaxCodecID & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxCodecID)\r
};\r
\r
-class MATROSKA_DLL_API KaxCodecPrivate : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxCodecPrivate)\r
public:\r
- KaxCodecPrivate() {}\r
KaxCodecPrivate(const KaxCodecPrivate & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxCodecPrivate)\r
};\r
\r
-class MATROSKA_DLL_API KaxCodecName : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxCodecName)\r
public:\r
- KaxCodecName() {}\r
KaxCodecName(const KaxCodecName & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxCodecName)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackAttachmentLink : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTrackAttachmentLink)\r
public:\r
- KaxTrackAttachmentLink() {}\r
KaxTrackAttachmentLink(const KaxTrackAttachmentLink & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const {return true;} // we don't mind about what's inside\r
\r
EBML_CONCRETE_CLASS(KaxTrackAttachmentLink)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackOverlay : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackOverlay)\r
public:\r
- KaxTrackOverlay() {}\r
KaxTrackOverlay(const KaxTrackOverlay & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackOverlay)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackTranslate : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTrackTranslate)\r
public:\r
- KaxTrackTranslate();\r
KaxTrackTranslate(const KaxTrackTranslate & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackTranslate)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackTranslateCodec : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackTranslateCodec)\r
public:\r
- KaxTrackTranslateCodec() {}\r
KaxTrackTranslateCodec(const KaxTrackTranslateCodec & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackTranslateCodec)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackTranslateEditionUID : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxTrackTranslateEditionUID)\r
public:\r
- KaxTrackTranslateEditionUID() {}\r
KaxTrackTranslateEditionUID(const KaxTrackTranslateEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackTranslateEditionUID)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackTranslateTrackID : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxTrackTranslateTrackID)\r
public:\r
- KaxTrackTranslateTrackID() {}\r
KaxTrackTranslateTrackID(const KaxTrackTranslateTrackID & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize() const { return true;}\r
\r
};\r
\r
#if MATROSKA_VERSION >= 2\r
-class MATROSKA_DLL_API KaxCodecSettings : public EbmlUnicodeString {\r
+DECLARE_MKX_UNISTRING(KaxCodecSettings)\r
public:\r
- KaxCodecSettings() {}\r
KaxCodecSettings(const KaxCodecSettings & ElementToClone) :EbmlUnicodeString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxCodecSettings)\r
};\r
\r
-class MATROSKA_DLL_API KaxCodecInfoURL : public EbmlString {\r
+DECLARE_MKX_STRING(KaxCodecInfoURL)\r
public:\r
- KaxCodecInfoURL() {}\r
KaxCodecInfoURL(const KaxCodecInfoURL & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxCodecInfoURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxCodecDownloadURL : public EbmlString {\r
+DECLARE_MKX_STRING(KaxCodecDownloadURL)\r
public:\r
- KaxCodecDownloadURL() {}\r
KaxCodecDownloadURL(const KaxCodecDownloadURL & ElementToClone) :EbmlString(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxCodecDownloadURL)\r
};\r
\r
-class MATROSKA_DLL_API KaxCodecDecodeAll : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxCodecDecodeAll)\r
public:\r
- KaxCodecDecodeAll() :EbmlUInteger(1) {}\r
KaxCodecDecodeAll(const KaxCodecDecodeAll & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxCodecDecodeAll)\r
#include "ebml/EbmlUInteger.h"\r
#include "ebml/EbmlBinary.h"\r
#include "ebml/EbmlFloat.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxTrackVideo : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTrackVideo)\r
public:\r
- KaxTrackVideo();\r
KaxTrackVideo(const KaxTrackVideo & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTrackVideo)\r
};\r
\r
#if MATROSKA_VERSION >= 2\r
-class MATROSKA_DLL_API KaxVideoFlagInterlaced : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoFlagInterlaced)\r
public:\r
- KaxVideoFlagInterlaced() :EbmlUInteger(0) {}\r
KaxVideoFlagInterlaced(const KaxVideoFlagInterlaced & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoFlagInterlaced)\r
};\r
\r
-class MATROSKA_DLL_API KaxVideoStereoMode : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoStereoMode)\r
public:\r
- KaxVideoStereoMode() :EbmlUInteger(0) {}\r
KaxVideoStereoMode(const KaxVideoStereoMode & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoStereoMode)\r
};\r
#endif // MATROSKA_VERSION\r
\r
-class MATROSKA_DLL_API KaxVideoPixelWidth : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoPixelWidth)\r
public:\r
- KaxVideoPixelWidth() {}\r
KaxVideoPixelWidth(const KaxVideoPixelWidth & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoPixelWidth)\r
};\r
\r
-class MATROSKA_DLL_API KaxVideoPixelHeight : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoPixelHeight)\r
public:\r
- KaxVideoPixelHeight() {}\r
KaxVideoPixelHeight(const KaxVideoPixelHeight & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoPixelHeight)\r
};\r
\r
-class MATROSKA_DLL_API KaxVideoPixelCropBottom : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoPixelCropBottom)\r
public:\r
- KaxVideoPixelCropBottom(): EbmlUInteger(0) {}\r
KaxVideoPixelCropBottom(const KaxVideoPixelCropBottom & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoPixelCropBottom)\r
};\r
\r
-class MATROSKA_DLL_API KaxVideoPixelCropTop : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoPixelCropTop)\r
public:\r
- KaxVideoPixelCropTop(): EbmlUInteger(0) {}\r
KaxVideoPixelCropTop(const KaxVideoPixelCropTop & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoPixelCropTop)\r
};\r
\r
-class MATROSKA_DLL_API KaxVideoPixelCropLeft : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoPixelCropLeft)\r
public:\r
- KaxVideoPixelCropLeft(): EbmlUInteger(0) {}\r
KaxVideoPixelCropLeft(const KaxVideoPixelCropLeft & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoPixelCropLeft)\r
};\r
\r
-class MATROSKA_DLL_API KaxVideoPixelCropRight : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoPixelCropRight)\r
public:\r
- KaxVideoPixelCropRight(): EbmlUInteger(0) {}\r
KaxVideoPixelCropRight(const KaxVideoPixelCropRight & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoPixelCropRight)\r
};\r
\r
-class MATROSKA_DLL_API KaxVideoDisplayWidth : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoDisplayWidth)\r
public:\r
- KaxVideoDisplayWidth() {}\r
KaxVideoDisplayWidth(const KaxVideoDisplayWidth & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoDisplayWidth)\r
};\r
\r
-class MATROSKA_DLL_API KaxVideoDisplayHeight : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoDisplayHeight)\r
public:\r
- KaxVideoDisplayHeight() {}\r
KaxVideoDisplayHeight(const KaxVideoDisplayHeight & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoDisplayHeight)\r
};\r
\r
#if MATROSKA_VERSION >= 2\r
-class MATROSKA_DLL_API KaxVideoDisplayUnit : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoDisplayUnit)\r
public:\r
- KaxVideoDisplayUnit() {}\r
KaxVideoDisplayUnit(const KaxVideoDisplayUnit & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoDisplayUnit)\r
};\r
\r
-class MATROSKA_DLL_API KaxVideoAspectRatio : public EbmlUInteger {\r
+DECLARE_MKX_UINTEGER(KaxVideoAspectRatio)\r
public:\r
- KaxVideoAspectRatio() {}\r
KaxVideoAspectRatio(const KaxVideoAspectRatio & ElementToClone) :EbmlUInteger(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoAspectRatio)\r
};\r
#endif // MATROSKA_VERSION\r
\r
-class MATROSKA_DLL_API KaxVideoColourSpace : public EbmlBinary {\r
+DECLARE_MKX_BINARY(KaxVideoColourSpace)\r
public:\r
- KaxVideoColourSpace() {}\r
KaxVideoColourSpace(const KaxVideoColourSpace & ElementToClone) :EbmlBinary(ElementToClone){}\r
bool ValidateSize(void) const {return (GetSize() == 4);}\r
\r
};\r
\r
#if MATROSKA_VERSION >= 2\r
-class MATROSKA_DLL_API KaxVideoGamma : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxVideoGamma)\r
public:\r
- KaxVideoGamma() {}\r
KaxVideoGamma(const KaxVideoGamma & ElementToClone) :EbmlFloat(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxVideoGamma)\r
};\r
#endif // MATROSKA_VERSION\r
\r
-class MATROSKA_DLL_API KaxVideoFrameRate : public EbmlFloat {\r
+DECLARE_MKX_FLOAT(KaxVideoFrameRate)\r
public:\r
- KaxVideoFrameRate() {}\r
KaxVideoFrameRate(const KaxVideoFrameRate & ElementToClone) :EbmlFloat(ElementToClone) {}\r
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);\r
\r
#include "ebml/EbmlMaster.h"\r
#include "ebml/EbmlUInteger.h"\r
#include "matroska/KaxTrackEntryData.h"\r
+#include "matroska/KaxDefines.h"\r
\r
using namespace LIBEBML_NAMESPACE;\r
\r
START_LIBMATROSKA_NAMESPACE\r
\r
-class MATROSKA_DLL_API KaxTracks : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTracks)\r
public:\r
- KaxTracks();\r
KaxTracks(const KaxTracks & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EBML_CONCRETE_CLASS(KaxTracks)\r
};\r
\r
-class MATROSKA_DLL_API KaxTrackEntry : public EbmlMaster {\r
+DECLARE_MKX_MASTER(KaxTrackEntry)\r
public:\r
- KaxTrackEntry();\r
KaxTrackEntry(const KaxTrackEntry & ElementToClone) :EbmlMaster(ElementToClone) {}\r
\r
EbmlUInteger & TrackNumber() const { return *(static_cast<EbmlUInteger *>(FindElt(EBML_INFO(KaxTrackNumber)))); }\r
EbmlSemantic(true, true, EBML_INFO(KaxBlockAdditional))\r
};\r
\r
-DEFINE_MKX_MASTER_NOBODY(KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup");\r
-DEFINE_MKX_BINARY (KaxBlock, 0xA1, 1, KaxBlockGroup, "Block");\r
-DEFINE_MKX_UINTEGER(KaxBlockDuration, 0x9B, 1, KaxBlockGroup, "BlockDuration");\r
+DEFINE_MKX_MASTER_NOBODY(KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup");\r
+DEFINE_MKX_BINARY_CONS (KaxBlock, 0xA1, 1, KaxBlockGroup, "Block");\r
+DEFINE_MKX_UINTEGER (KaxBlockDuration, 0x9B, 1, KaxBlockGroup, "BlockDuration");\r
#if MATROSKA_VERSION >= 2\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
+DEFINE_MKX_BINARY_CONS (KaxSimpleBlock, 0xA3, 1, KaxCluster, "SimpleBlock");\r
+DEFINE_MKX_BINARY_CONS (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
+DEFINE_MKX_MASTER (KaxBlockAdditions, 0x75A1, 2, KaxBlockGroup, "BlockAdditions");\r
+DEFINE_MKX_MASTER (KaxBlockMore, 0xA6, 1, KaxBlockAdditions, "BlockMore");\r
+DEFINE_MKX_UINTEGER_DEF (KaxBlockAddID, 0xEE, 1, KaxBlockMore, "BlockAddID", 1);\r
+DEFINE_MKX_BINARY (KaxBlockAdditional, 0xA5, 1, KaxBlockMore, "BlockAdditional");\r
\r
\r
DataBuffer * DataBuffer::Clone()\r
EbmlSemantic(false, true, EBML_INFO(KaxSliceDuration)),\r
};\r
\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
+DEFINE_MKX_UINTEGER_DEF (KaxReferencePriority, 0xFA, 1, KaxBlockGroup, "FlagReferenced", 0);\r
+DEFINE_MKX_SINTEGER_CONS(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_DEF (KaxSliceLaceNumber, 0xCC, 1, KaxTimeSlice, "SliceLaceNumber", 0);\r
+DEFINE_MKX_UINTEGER_DEF (KaxSliceFrameNumber, 0xCD, 1, KaxTimeSlice, "SliceFrameNumber", 0);\r
+DEFINE_MKX_UINTEGER_DEF (KaxSliceBlockAddID, 0xCB, 1, KaxTimeSlice, "SliceBlockAddID", 0);\r
+DEFINE_MKX_UINTEGER (KaxSliceDelay, 0xCE, 1, KaxTimeSlice, "SliceDelay");\r
+DEFINE_MKX_UINTEGER_DEF (KaxSliceDuration, 0xCF, 1, KaxTimeSlice, "SliceDuration", 0);\r
#if MATROSKA_VERSION >= 2\r
-DEFINE_MKX_UINTEGER(KaxReferenceVirtual, 0xFD, 1, KaxBlockGroup, "ReferenceVirtual");\r
+DEFINE_MKX_UINTEGER (KaxReferenceVirtual, 0xFD, 1, KaxBlockGroup, "ReferenceVirtual");\r
#endif\r
\r
\r
EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessData)),\r
};\r
\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
+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_DEF(KaxEditionFlagHidden, 0x45BD, 2, KaxEditionEntry, "EditionFlagHidden", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagDefault, 0x45DB, 2, KaxEditionEntry, "EditionFlagDefault", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagOrdered, 0x45DD, 2, KaxEditionEntry, "EditionFlagOrdered", 0);\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_DEF(KaxChapterFlagHidden, 0x98, 1, KaxChapterAtom, "ChapterFlagHidden", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxChapterFlagEnabled, 0x4598, 2, KaxChapterAtom, "ChapterFlagEnabled", 1);\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_DEF (KaxChapterLanguage, 0x437C, 2, KaxChapterLanguage, "ChapterLanguage", "eng"); // 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_DEF(KaxChapterProcessCodecID, 0x6955, 2, KaxChapterProcess, "ChapterProcessCodecID", 0);\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
END_LIBMATROSKA_NAMESPACE\r
EbmlSemantic(false, true, EBML_INFO(KaxContentSigHashAlgo)),\r
};\r
\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
+DEFINE_MKX_MASTER (KaxContentEncodings, 0x6d80, 2, KaxTrackEntry, "ContentEncodings");\r
+DEFINE_MKX_MASTER (KaxContentEncoding, 0x6240, 2, KaxContentEncodings, "ContentEncoding");\r
+DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingOrder, 0x5031, 2, KaxContentEncoding, "ContentEncodingOrder", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingScope, 0x5032, 2, KaxContentEncoding, "ContentEncodingScope", 1);\r
+DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingType, 0x5033, 2, KaxContentEncoding, "ContentEncodingType", 0);\r
+DEFINE_MKX_MASTER (KaxContentCompression, 0x5034, 2, KaxContentEncoding, "ContentCompression");\r
+DEFINE_MKX_UINTEGER_DEF(KaxContentCompAlgo, 0x4254, 2, KaxContentCompression, "ContentCompAlgo", 0);\r
+DEFINE_MKX_UINTEGER (KaxContentCompSettings, 0x4255, 2, KaxContentCompression, "ContentCompSettings");\r
+DEFINE_MKX_MASTER (KaxContentEncryption, 0x5035, 2, KaxContentEncoding, "ContentEncryption");\r
+DEFINE_MKX_UINTEGER_DEF(KaxContentEncAlgo, 0x47e1, 2, KaxContentEncryption, "ContentEncAlgo", 0);\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_DEF(KaxContentSigAlgo, 0x47e5, 2, KaxContentEncryption, "ContentSigAlgo", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxContentSigHashAlgo, 0x47e6, 2, KaxContentEncryption, "ContentSigHashAlgo", 0);\r
\r
END_LIBMATROSKA_NAMESPACE\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
+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_DEF(KaxCueBlockNumber, 0x5378, 2, KaxCueTrackPositions, "CueBlockNumber", 1);\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
+DEFINE_MKX_UINTEGER_DEF(KaxCueCodecState, 0xEA, 1, KaxCueTrackPositions, "CueCodecState", 0);\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_DEF(KaxCueRefNumber, 0x535F, 2, KaxCueRefTime, "CueRefNumber", 1);\r
+DEFINE_MKX_UINTEGER_DEF(KaxCueRefCodecState, 0xEB, 1, KaxCueRefTime, "CueRefCodecState", 0);\r
#endif\r
\r
/*!\r
EbmlSemantic(true, true, EBML_INFO(KaxChapterTranslateID)),\r
};\r
\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
+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_DEF(KaxTimecodeScale, 0x2AD7B1, 3, KaxInfo, "TimecodeScale", 1000000);\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
END_LIBMATROSKA_NAMESPACE\r
EbmlSemantic(false, false, EBML_INFO(KaxTagSimple)),\r
};\r
\r
-DEFINE_MKX_MASTER (KaxTag, 0x7373, 2, KaxTags, "Tag");\r
-DEFINE_MKX_MASTER (KaxTagTargets, 0x63C0, 2, KaxTag, "TagTargets");\r
-DEFINE_MKX_MASTER (KaxTagGeneral, 0x67C9, 2, KaxTag, "TagGeneral");\r
-DEFINE_MKX_MASTER (KaxTagGenres, 0x6583, 2, KaxTag, "TagGenres");\r
-DEFINE_MKX_MASTER (KaxTagAudioSpecific, 0x41C5, 2, KaxTag, "TagAudioSpecific");\r
-DEFINE_MKX_MASTER (KaxTagImageSpecific, 0x4990, 2, KaxTag, "TagImageSpecific");\r
-DEFINE_MKX_UNISTRING(KaxTagBibliography, 0x4488, 2, KaxTag, "Bibliography");\r
-DEFINE_MKX_UNISTRING(KaxTagEncoder, 0x4431, 2, KaxTag, "Encoder");\r
-DEFINE_MKX_UNISTRING(KaxTagEncodeSettings, 0x6526, 2, KaxTag, "EncodeSettings");\r
-DEFINE_MKX_STRING (KaxTagLanguage, 0x22B59F, 3, KaxTag, "Language");\r
-DEFINE_MKX_UINTEGER (KaxTagLength, 0x5243, 2, KaxTag, "Length");\r
-DEFINE_MKX_UINTEGER (KaxTagPlaylistDelay, 0x72CC, 2, KaxTag, "PlaylistDelay");\r
-DEFINE_MKX_BINARY (KaxTagRating, 0x52BC, 2, KaxTag, "Rating");\r
-DEFINE_MKX_UNISTRING(KaxTagSubject, 0x49C1, 2, KaxTag, "Subject");\r
-DEFINE_MKX_UNISTRING(KaxTagUnsynchronisedText, 0x874B, 2, KaxTag, "UnsynchronisedText");\r
-DEFINE_MKX_STRING (KaxTagUserDefinedURL, 0x434A, 2, KaxTag, "UserDefinedURL");\r
-DEFINE_MKX_UINTEGER (KaxTagTargetTypeValue, 0x68CA, 2, KaxTagTargets, "TagTargetTypeValue");\r
-DEFINE_MKX_STRING (KaxTagTargetType, 0x63CA, 2, KaxTagTargets, "TagTargetType");\r
-DEFINE_MKX_UINTEGER (KaxTagTrackUID, 0x63C5, 2, KaxTagTargets, "TagTrackUID");\r
-DEFINE_MKX_UINTEGER (KaxTagEditionUID, 0x63C9, 2, KaxTagTargets, "TagEditionUID");\r
-DEFINE_MKX_UINTEGER (KaxTagChapterUID, 0x63C4, 2, KaxTagTargets, "TagChapterUID");\r
-DEFINE_MKX_UINTEGER (KaxTagAttachmentUID, 0x63C6, 2, KaxTagTargets, "TagAttachmentUID");\r
-DEFINE_MKX_UNISTRING(KaxTagArchivalLocation, 0x45A4, 2, KaxTagGeneral, "ArchivalLocation");\r
-DEFINE_MKX_UNISTRING(KaxTagFile, 0x454E, 2, KaxTagGeneral, "File");\r
-DEFINE_MKX_UNISTRING(KaxTagKeywords, 0x458C, 2, KaxTagGeneral, "Keywords");\r
-DEFINE_MKX_UNISTRING(KaxTagMood, 0x45AE, 2, KaxTagGeneral, "Mood");\r
-DEFINE_MKX_STRING (KaxTagRecordLocation, 0x457E, 2, KaxTagGeneral, "RecordLocation");\r
-DEFINE_MKX_UNISTRING(KaxTagSource, 0x458A, 2, KaxTagGeneral, "Source");\r
-DEFINE_MKX_UNISTRING(KaxTagSourceForm, 0x45B5, 2, KaxTagGeneral, "SourceForm");\r
-DEFINE_MKX_UNISTRING(KaxTagProduct, 0x45E3, 2, KaxTagGeneral, "Product");\r
-DEFINE_MKX_UNISTRING(KaxTagOriginalMediaType, 0x45A7, 2, KaxTagGeneral, "OriginalMediaType");\r
-DEFINE_MKX_UINTEGER (KaxTagPlayCounter, 0x4566, 2, KaxTagTargets, "PlayCounter");\r
-DEFINE_MKX_SINTEGER (KaxTagPopularimeter, 0x4532, 2, KaxTagTargets, "Popularimeter");\r
-DEFINE_MKX_STRING (KaxTagAudioGenre, 0x65C2, 2, KaxTagGenres, "AudioGenre");\r
-DEFINE_MKX_BINARY (KaxTagVideoGenre, 0x65A1, 2, KaxTagGenres, "VideoGenre");\r
-DEFINE_MKX_STRING (KaxTagSubGenre, 0x65AC, 2, KaxTagGenres, "SubGenre");\r
-DEFINE_MKX_BINARY (KaxTagAudioEncryption, 0x41B4, 2, KaxTagAudioSpecific, "AudioEncryption");\r
-DEFINE_MKX_FLOAT (KaxTagAudioGain, 0x4199, 2, KaxTagAudioSpecific, "AudioGain");\r
-DEFINE_MKX_FLOAT (KaxTagAudioPeak, 0x4189, 2, KaxTagAudioSpecific, "AudioPeak");\r
-DEFINE_MKX_FLOAT (KaxTagBPM, 0x41A1, 2, KaxTagAudioSpecific, "BPM");\r
-DEFINE_MKX_UINTEGER (KaxTagDiscTrack, 0x41B6, 2, KaxTagAudioSpecific, "DiscTrack");\r
-DEFINE_MKX_UINTEGER (KaxTagSetPart, 0x416E, 2, KaxTagAudioSpecific, "SetPart");\r
-DEFINE_MKX_BINARY (KaxTagEqualisation, 0x41B1, 2, KaxTagAudioSpecific, "Equalisation");\r
-DEFINE_MKX_STRING (KaxTagInitialKey, 0x413A, 2, KaxTagAudioSpecific, "InitialKey");\r
-DEFINE_MKX_STRING (KaxTagOfficialAudioFileURL, 0x4133, 2, KaxTagAudioSpecific, "OfficialAudioFileURL");\r
-DEFINE_MKX_STRING (KaxTagOfficialAudioSourceURL, 0x413E, 2, KaxTagAudioSpecific, "AudioSourceURL");\r
-DEFINE_MKX_UINTEGER (KaxTagCaptureDPI, 0x49C7, 2, KaxTagImageSpecific, "CaptureDPI");\r
-DEFINE_MKX_BINARY (KaxTagCaptureLightness, 0x49E1, 2, KaxTagImageSpecific, "CaptureLightness");\r
-DEFINE_MKX_UINTEGER (KaxTagCapturePaletteSetting, 0x4934, 2, KaxTagImageSpecific, "CapturePaletteSetting");\r
-DEFINE_MKX_BINARY (KaxTagCaptureSharpness, 0x4922, 2, KaxTagImageSpecific, "CaptureSharpness");\r
-DEFINE_MKX_UNISTRING(KaxTagCropped, 0x4987, 2, KaxTagImageSpecific, "Cropped");\r
-DEFINE_MKX_STRING (KaxTagOriginalDimensions, 0x4933, 2, KaxTagImageSpecific, "OriginalDimensions");\r
+DEFINE_MKX_MASTER (KaxTag, 0x7373, 2, KaxTags, "Tag");\r
+DEFINE_MKX_MASTER (KaxTagTargets, 0x63C0, 2, KaxTag, "TagTargets");\r
+DEFINE_MKX_MASTER (KaxTagGeneral, 0x67C9, 2, KaxTag, "TagGeneral");\r
+DEFINE_MKX_MASTER (KaxTagGenres, 0x6583, 2, KaxTag, "TagGenres");\r
+DEFINE_MKX_MASTER (KaxTagAudioSpecific, 0x41C5, 2, KaxTag, "TagAudioSpecific");\r
+DEFINE_MKX_MASTER (KaxTagImageSpecific, 0x4990, 2, KaxTag, "TagImageSpecific");\r
+DEFINE_MKX_UNISTRING (KaxTagBibliography, 0x4488, 2, KaxTag, "Bibliography");\r
+DEFINE_MKX_UNISTRING (KaxTagEncoder, 0x4431, 2, KaxTag, "Encoder");\r
+DEFINE_MKX_UNISTRING (KaxTagEncodeSettings, 0x6526, 2, KaxTag, "EncodeSettings");\r
+DEFINE_MKX_STRING (KaxTagLanguage, 0x22B59F, 3, KaxTag, "Language");\r
+DEFINE_MKX_UINTEGER (KaxTagLength, 0x5243, 2, KaxTag, "Length");\r
+DEFINE_MKX_UINTEGER (KaxTagPlaylistDelay, 0x72CC, 2, KaxTag, "PlaylistDelay");\r
+DEFINE_MKX_BINARY (KaxTagRating, 0x52BC, 2, KaxTag, "Rating");\r
+DEFINE_MKX_UNISTRING (KaxTagSubject, 0x49C1, 2, KaxTag, "Subject");\r
+DEFINE_MKX_UNISTRING (KaxTagUnsynchronisedText, 0x874B, 2, KaxTag, "UnsynchronisedText");\r
+DEFINE_MKX_STRING (KaxTagUserDefinedURL, 0x434A, 2, KaxTag, "UserDefinedURL");\r
+DEFINE_MKX_UINTEGER_DEF(KaxTagTargetTypeValue, 0x68CA, 2, KaxTagTargets, "TagTargetTypeValue", 50);\r
+DEFINE_MKX_STRING (KaxTagTargetType, 0x63CA, 2, KaxTagTargets, "TagTargetType");\r
+DEFINE_MKX_UINTEGER_DEF(KaxTagTrackUID, 0x63C5, 2, KaxTagTargets, "TagTrackUID", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxTagEditionUID, 0x63C9, 2, KaxTagTargets, "TagEditionUID", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxTagChapterUID, 0x63C4, 2, KaxTagTargets, "TagChapterUID", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxTagAttachmentUID, 0x63C6, 2, KaxTagTargets, "TagAttachmentUID", 0);\r
+DEFINE_MKX_UNISTRING (KaxTagArchivalLocation, 0x45A4, 2, KaxTagGeneral, "ArchivalLocation");\r
+DEFINE_MKX_UNISTRING (KaxTagFile, 0x454E, 2, KaxTagGeneral, "File");\r
+DEFINE_MKX_UNISTRING (KaxTagKeywords, 0x458C, 2, KaxTagGeneral, "Keywords");\r
+DEFINE_MKX_UNISTRING (KaxTagMood, 0x45AE, 2, KaxTagGeneral, "Mood");\r
+DEFINE_MKX_STRING (KaxTagRecordLocation, 0x457E, 2, KaxTagGeneral, "RecordLocation");\r
+DEFINE_MKX_UNISTRING (KaxTagSource, 0x458A, 2, KaxTagGeneral, "Source");\r
+DEFINE_MKX_UNISTRING (KaxTagSourceForm, 0x45B5, 2, KaxTagGeneral, "SourceForm");\r
+DEFINE_MKX_UNISTRING (KaxTagProduct, 0x45E3, 2, KaxTagGeneral, "Product");\r
+DEFINE_MKX_UNISTRING (KaxTagOriginalMediaType, 0x45A7, 2, KaxTagGeneral, "OriginalMediaType");\r
+DEFINE_MKX_UINTEGER (KaxTagPlayCounter, 0x4566, 2, KaxTagTargets, "PlayCounter");\r
+DEFINE_MKX_SINTEGER (KaxTagPopularimeter, 0x4532, 2, KaxTagTargets, "Popularimeter");\r
+DEFINE_MKX_STRING (KaxTagAudioGenre, 0x65C2, 2, KaxTagGenres, "AudioGenre");\r
+DEFINE_MKX_BINARY (KaxTagVideoGenre, 0x65A1, 2, KaxTagGenres, "VideoGenre");\r
+DEFINE_MKX_STRING (KaxTagSubGenre, 0x65AC, 2, KaxTagGenres, "SubGenre");\r
+DEFINE_MKX_BINARY (KaxTagAudioEncryption, 0x41B4, 2, KaxTagAudioSpecific, "AudioEncryption");\r
+DEFINE_MKX_FLOAT (KaxTagAudioGain, 0x4199, 2, KaxTagAudioSpecific, "AudioGain");\r
+DEFINE_MKX_FLOAT (KaxTagAudioPeak, 0x4189, 2, KaxTagAudioSpecific, "AudioPeak");\r
+DEFINE_MKX_FLOAT (KaxTagBPM, 0x41A1, 2, KaxTagAudioSpecific, "BPM");\r
+DEFINE_MKX_UINTEGER (KaxTagDiscTrack, 0x41B6, 2, KaxTagAudioSpecific, "DiscTrack");\r
+DEFINE_MKX_UINTEGER (KaxTagSetPart, 0x416E, 2, KaxTagAudioSpecific, "SetPart");\r
+DEFINE_MKX_BINARY (KaxTagEqualisation, 0x41B1, 2, KaxTagAudioSpecific, "Equalisation");\r
+DEFINE_MKX_STRING (KaxTagInitialKey, 0x413A, 2, KaxTagAudioSpecific, "InitialKey");\r
+DEFINE_MKX_STRING (KaxTagOfficialAudioFileURL, 0x4133, 2, KaxTagAudioSpecific, "OfficialAudioFileURL");\r
+DEFINE_MKX_STRING (KaxTagOfficialAudioSourceURL, 0x413E, 2, KaxTagAudioSpecific, "AudioSourceURL");\r
+DEFINE_MKX_UINTEGER (KaxTagCaptureDPI, 0x49C7, 2, KaxTagImageSpecific, "CaptureDPI");\r
+DEFINE_MKX_BINARY (KaxTagCaptureLightness, 0x49E1, 2, KaxTagImageSpecific, "CaptureLightness");\r
+DEFINE_MKX_UINTEGER (KaxTagCapturePaletteSetting, 0x4934, 2, KaxTagImageSpecific, "CapturePaletteSetting");\r
+DEFINE_MKX_BINARY (KaxTagCaptureSharpness, 0x4922, 2, KaxTagImageSpecific, "CaptureSharpness");\r
+DEFINE_MKX_UNISTRING (KaxTagCropped, 0x4987, 2, KaxTagImageSpecific, "Cropped");\r
+DEFINE_MKX_STRING (KaxTagOriginalDimensions, 0x4933, 2, KaxTagImageSpecific, "OriginalDimensions");\r
\r
-DEFINE_MKX_MASTER (KaxTagSimple, 0x67C8, 2, KaxTag, "TagSimple");\r
-DEFINE_MKX_UNISTRING(KaxTagName, 0x45A3, 2, KaxTagSimple, "TagName");\r
-DEFINE_MKX_STRING (KaxTagLangue, 0x447A, 2, KaxTagSimple, "TagLanguage");\r
-DEFINE_MKX_UINTEGER (KaxTagDefault, 0x4484, 2, KaxTagSimple, "TagDefault");\r
-DEFINE_MKX_UNISTRING(KaxTagString, 0x4487, 2, KaxTagSimple, "TagString");\r
-DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, 2, KaxTagSimple, "TagBinary");\r
+DEFINE_MKX_MASTER (KaxTagSimple, 0x67C8, 2, KaxTag, "TagSimple");\r
+DEFINE_MKX_UNISTRING (KaxTagName, 0x45A3, 2, KaxTagSimple, "TagName");\r
+DEFINE_MKX_STRING_DEF (KaxTagLangue, 0x447A, 2, KaxTagSimple, "TagLanguage", "und");\r
+DEFINE_MKX_UINTEGER_DEF(KaxTagDefault, 0x4484, 2, KaxTagSimple, "TagDefault", 1);\r
+DEFINE_MKX_UNISTRING (KaxTagString, 0x4487, 2, KaxTagSimple, "TagString");\r
+DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, 2, KaxTagSimple, "TagBinary");\r
\r
END_LIBMATROSKA_NAMESPACE\r
#endif // MATROSKA_VERSION\r
};\r
\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
+DEFINE_MKX_MASTER (KaxTrackAudio, 0xE1, 1, KaxTrackEntry, "TrackAudio");\r
+DEFINE_MKX_FLOAT_DEF (KaxAudioSamplingFreq, 0xB5, 1, KaxTrackAudio, "AudioSamplingFreq", 8000.0);\r
+DEFINE_MKX_FLOAT (KaxAudioOutputSamplingFreq, 0x78B5, 2, KaxTrackAudio, "AudioOutputSamplingFreq");\r
+DEFINE_MKX_UINTEGER_DEF(KaxAudioChannels, 0x9F, 1, KaxTrackAudio, "AudioChannels", 1);\r
+DEFINE_MKX_UINTEGER (KaxAudioBitDepth, 0x6264, 2, KaxTrackAudio, "AudioBitDepth");\r
#if MATROSKA_VERSION >= 2\r
-DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, 2, KaxTrackAudio, "AudioPosition");\r
+DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, 2, KaxTrackAudio, "AudioPosition");\r
#endif\r
\r
END_LIBMATROSKA_NAMESPACE\r
EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateTrackID)),\r
};\r
\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
+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_DEF(KaxTrackFlagDefault, 0x88, 1, KaxTracks, "TrackFlagEnabled", 1);\r
+DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagForced, 0x55AA, 2, KaxTracks, "TrackFlagForced", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagLacing, 0x9C, 1, KaxTracks, "TrackFlagLacing", 1);\r
+DEFINE_MKX_UINTEGER_DEF(KaxTrackMinCache, 0x6DE7, 2, KaxTracks, "TrackMinCache", 0);\r
+DEFINE_MKX_UINTEGER (KaxTrackMaxCache, 0x6DF8, 2, KaxTracks, "TrackMaxCache\0rotomodobopo");\r
+DEFINE_MKX_UINTEGER (KaxTrackDefaultDuration, 0x23E383, 3, KaxTracks, "TrackDefaultDuration");\r
+DEFINE_MKX_FLOAT_DEF (KaxTrackTimecodeScale, 0x23314F, 3, KaxTracks, "TrackTimecodeScale", 1.0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxMaxBlockAdditionID, 0x55EE, 2, KaxTracks, "MaxBlockAdditionID", 0);\r
+//DEFINE_MKX_SINTEGER_DEF(KaxTrackOffset, 0x537F, 2, KaxTracks, "TrackOffset", 0);\r
+DEFINE_MKX_UNISTRING (KaxTrackName, 0x536E, 2, KaxTracks, "TrackName");\r
+DEFINE_MKX_STRING_DEF (KaxTrackLanguage, 0x22B59C, 3, KaxTracks, "TrackLanguage", "eng");\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
-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
+DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagEnabled, 0xB9, 1, KaxTracks, "TrackFlagDefault", 1);\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_DEF(KaxCodecDecodeAll, 0xAA, 1, KaxTracks, "CodecDecodeAll", 1);\r
#endif\r
\r
END_LIBMATROSKA_NAMESPACE\r
#endif // MATROSKA_VERSION\r
};\r
\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
+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_DEF(KaxVideoPixelCropBottom, 0x54AA, 2, KaxTrackVideo, "VideoPixelCropBottom", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropTop, 0x54BB, 2, KaxTrackVideo, "VideoPixelCropTop", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropLeft, 0x54CC, 2, KaxTrackVideo, "VideoPixelCropLeft", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropRight, 0x54DD, 2, KaxTrackVideo, "VideoPixelCropRight", 0);\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
-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
+DEFINE_MKX_UINTEGER_DEF(KaxVideoFlagInterlaced, 0x9A, 1, KaxTrackVideo, "VideoFlagInterlaced", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxVideoStereoMode, 0x53B9, 2, KaxTrackVideo, "VideoStereoMode", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxVideoDisplayUnit, 0x54B2, 2, KaxTrackVideo, "VideoDisplayUnit", 0);\r
+DEFINE_MKX_UINTEGER_DEF(KaxVideoAspectRatio, 0x54B3, 2, KaxTrackVideo, "VideoAspectRatio", 0);\r
+DEFINE_MKX_FLOAT (KaxVideoGamma, 0x2FB523, 3, KaxTrackVideo, "VideoGamma");\r
#endif\r
\r
filepos_t KaxVideoFrameRate::RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault)\r