]> granicus.if.org Git - libmatroska/commitdiff
move the default values in the .cpp files via the new declaration macros
authorSteve Lhomme <slhomme@matroska.org>
Tue, 6 Apr 2010 17:20:14 +0000 (17:20 +0000)
committerSteve Lhomme <slhomme@matroska.org>
Tue, 6 Apr 2010 17:20:14 +0000 (17:20 +0000)
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@77 a6f86f6d-0131-4f8e-9e7b-e335508773d5

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

index 9b60f96d422ddd9f2dcad6abf132df2281cf272b..23d0eb03659e05b214c2f29c44c2c1f2840760a2 100644 (file)
 #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
@@ -88,18 +84,16 @@ class MATROSKA_DLL_API KaxFileData : public EbmlBinary {
         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
index 15458ba045e543f2da016df3e795255723383df7..c574714ee885251eff9a0ccf97531d54a4987c69 100644 (file)
 \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
index d0f56c33d10d4f6809c5ccbdc9c61115f4465aaf..fe7efdbfa9b65871dea88e1c829e08a9c89492f8 100644 (file)
-/****************************************************************************
-** libmatroska : parse Matroska files, see http://www.matroska.org/
-**
-** <file/class description>
-**
-** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License as published by the Free Software Foundation; either
-** version 2.1 of the License, or (at your option) any later version.
-** 
-** This library is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-** Lesser General Public License for more details.
-** 
-** You should have received a copy of the GNU Lesser General Public
-** License along with this library; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-**
-** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
-** Contact license@matroska.org if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-/*!
-       \file
-       \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
index 00dde602ee51e4db30f38b740574fc3e8cafd382..81ea12645bdcbdbda5725775a06c564f0d03f755 100644 (file)
@@ -37,6 +37,7 @@
 #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
@@ -46,9 +47,8 @@ class KaxReferenceBlock;
 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
@@ -57,7 +57,7 @@ class MATROSKA_DLL_API KaxReferencePriority : public EbmlUInteger {
 /*!\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
@@ -82,66 +82,58 @@ class MATROSKA_DLL_API KaxReferenceBlock : public EbmlSInteger {
 };\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
index 1f1f72030bb7562d6369c06215f668b646f7b46d..dc42b830b87bb193c262417689df7dc01200a89c 100644 (file)
 #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
index 80d86d26289f9059bc046ffdb973f415adab8f0d..bd1e55e66d3ddc447fa09db19a727958e6880b89 100644 (file)
@@ -41,6 +41,7 @@
 #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
@@ -48,9 +49,8 @@ START_LIBMATROSKA_NAMESPACE
 \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
index 32b14e653ff1771ada648aaa06e67f245907de0f..9f9cf2d794092d09534d97eb5a0992ac5fd13526 100644 (file)
 #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
index d5087437342140538a92f286e894e8b45b7e5d2c..6b6bb6be1636b64fc63b330f1b6dea5f1fc5c530 100644 (file)
 #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
@@ -117,27 +110,24 @@ class MATROSKA_DLL_API KaxContentCompSettings: public EbmlBinary {
         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
@@ -145,9 +135,8 @@ class MATROSKA_DLL_API KaxContentEncKeyID: public EbmlBinary {
         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
@@ -155,9 +144,8 @@ class MATROSKA_DLL_API KaxContentSignature: public EbmlBinary {
         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
@@ -165,18 +153,16 @@ class MATROSKA_DLL_API KaxContentSigKeyID: public EbmlBinary {
         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
index 0de85e02f20932cef144127d83943cce316dd58c..187b509e8bf8d34ba8d84f76f7fa9db18c2ce30a 100644 (file)
@@ -47,9 +47,8 @@ START_LIBMATROSKA_NAMESPACE
 \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
index 8eaa478cfe3ad5e7a67101112df594b0add6edbf..e198b05deeb93ddd907875dd90bdddd30dc1ab00 100644 (file)
-/****************************************************************************
-** libmatroska : parse Matroska files, see http://www.matroska.org/
-**
-** <file/class description>
-**
-** Copyright (C) 2002-2010 Steve Lhomme.  All rights reserved.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License as published by the Free Software Foundation; either
-** version 2.1 of the License, or (at your option) any later version.
-** 
-** This library is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-** Lesser General Public License for more details.
-** 
-** You should have received a copy of the GNU Lesser General Public
-** License along with this library; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-**
-** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
-** Contact license@matroska.org if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-/*!
-       \file
-       \version \$Id: KaxCuesData.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
index 237abf062508c9ec7455068333a5d4dddc5926e9..3b4c6f5d2d2b694957fb0b30b7f52d6acfedca07 100644 (file)
 #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
index e15d7ffe62a9630ed7d1cafa57e3bf141ac7af4d..aae30022b222ac47b8e4ef2ca35e813701756c46 100644 (file)
 #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
index 69ef67ed414b03c0f945ad14a7bae625a63ad14d..10d347158d30f2bd3aa8dd885b4fd3a7c68fa146 100644 (file)
 #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
index 29e412629d5821e7f7e144aca8f998815b3c6648..7ff878461ad89e343161f643aa45a7329de59ee8 100644 (file)
@@ -39,6 +39,7 @@
 #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
@@ -47,9 +48,8 @@ START_LIBMATROSKA_NAMESPACE
 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
@@ -64,9 +64,8 @@ class MATROSKA_DLL_API KaxSeekHead : public EbmlMaster {
         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
@@ -76,18 +75,16 @@ class MATROSKA_DLL_API KaxSeek : public EbmlMaster {
         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
index adf2bacf8f2fb3631829f236688f27160c245518..2d9abd64d77041a11cd32a981028d52b37916276 100644 (file)
 \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
index 2ad40184bcc6fcb5993667324cc2bd6457a9a23e..67e3d181c060a07e6d89a84222d17b3beff6fde2 100644 (file)
 #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
index 83ef460b8b6ab37d967f7ed6f93e561186c06594..dc08a63ba150f7ca6713ffba9bb54768b52e7dc6 100644 (file)
@@ -45,6 +45,7 @@
 #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
@@ -122,457 +123,392 @@ enum KaxTagMultiTitleTypes {
        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
index 1801ba0dd6b4a831ba3ad9e7a81b8735743307d6..5bc3eaaa6288677cae9a99a24f99681e2129f01b 100644 (file)
 \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
index e2ace45fe46cb4ba9f43a8d289a982b85c23f2e2..7c1c124e79bb719af121caaf3677fd87693d2721 100644 (file)
 #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
@@ -88,9 +84,8 @@ class MATROSKA_DLL_API KaxAudioPosition : public EbmlBinary {
 };\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
index 53c22dfebcd874d1b3a660747f241d073d5289be..92267b9baefa9316319b969f05236fb4fed1f45c 100644 (file)
 #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
@@ -238,33 +216,29 @@ class MATROSKA_DLL_API KaxTrackTranslateTrackID : public EbmlBinary {
 };\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
index 55d5923cb51f0a7844ba0df80a34b797f261d466..ead38f16af296968d4972f06460f3d4fb33175d0 100644 (file)
 #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
@@ -163,18 +150,16 @@ class MATROSKA_DLL_API KaxVideoColourSpace : public EbmlBinary {
 };\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
index b1294cc75d36ad8c51248e32fc2f8afcc4145217..866425f53478b8f5f6aaf3eab2a722be3c171207 100644 (file)
 #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
index 231863a7cdbcf8599ca0231be18a2c93b9c83f4e..6090b3fbb5f6d59df043a788647d802d395a2fea 100644 (file)
@@ -75,18 +75,18 @@ static const EbmlSemantic ContextList_KaxBlockMore[2] =
        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
index 23b9ce1ed0765a2acd472e283c7955cf21eee171..d4169199bb7f6ecf7e15ff56512cd010df59b4ea 100644 (file)
@@ -55,17 +55,17 @@ const EbmlSemantic ContextList_KaxTimeSlice[5] =
        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
index d6fbe85a8f88ed66f19a498578e9035b64acaa88..6241da51d7295193cfbc83155618539d6e379a25 100644 (file)
@@ -94,32 +94,32 @@ static const EbmlSemantic ContextList_KaxChapterProcessCommand[2] =
     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
index b965786732406ff4af6c6d3495c7251d23b872f9..f193eaf7a981ea99984a416314ab88c3fe12896c 100644 (file)
@@ -64,20 +64,20 @@ static const EbmlSemantic ContextList_KaxContentEncryption[6] = {
   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
index fabb9485db3132ed7deaedd88c41043f9499e9ab..5828db3da99ae8be94e406c03e46a293e81086e2 100644 (file)
@@ -73,19 +73,19 @@ static const EbmlSemantic ContextList_KaxCueReference[4] =
 };\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
index c21a99532e14a08aa8b87b201aa39f6c6048fb99..0a5610fe1420a936db7978fe1305fc4d630bcc60 100644 (file)
@@ -46,20 +46,20 @@ static const EbmlSemantic ContextList_KaxChapterTranslate[3] =
        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
index 7a1cd24d2b9c2256d5481c4168e380108b429a31..f9d56c1ffd2bf5658af39c3538693de5fad87627 100644 (file)
@@ -137,64 +137,64 @@ static const EbmlSemantic ContextList_KaxTagSimple[6] =
        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
index f271c5c7bae5f64e00b5ce2d7d086e8238294711..152a06fa5860d23a2bcab23ef7e4201fa5afa3ca 100644 (file)
@@ -55,13 +55,13 @@ static const EbmlSemantic ContextList_KaxTrackAudio[5] =
 #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
index d544faa403d426455e4247c63d1fe0aa0ffbabbd..2846974523e633842b2a00eff7bc47b46dbe0b0a 100644 (file)
@@ -46,34 +46,35 @@ static const EbmlSemantic ContextList_KaxTrackTranslate[3] =
        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
index 084344b80766e451f7971e6135009852eaf5b1c7..e8660ef05145f0c5906449390ee75e2edd6fa25c 100644 (file)
@@ -65,23 +65,23 @@ static const EbmlSemantic ContextList_KaxTrackVideo[15] =
 #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